Skip to content

Commit 4ad1115

Browse files
committed
Fix compilation for 1.20.5
1 parent c29edf7 commit 4ad1115

File tree

7 files changed

+124
-133
lines changed

7 files changed

+124
-133
lines changed

worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/listener/BlockedPotionsListener.java

Lines changed: 54 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,10 @@
3535
import org.bukkit.inventory.meta.PotionMeta;
3636
import org.bukkit.potion.PotionEffect;
3737
import org.bukkit.potion.PotionEffectType;
38+
import org.bukkit.potion.PotionType;
39+
40+
import java.util.ArrayList;
41+
import java.util.List;
3842

3943
/**
4044
* Handles blocked potions.
@@ -50,43 +54,50 @@ public BlockedPotionsListener(WorldGuardPlugin plugin) {
5054
super(plugin);
5155
}
5256

57+
private PotionEffectType getBlockedEffectByArrow(Arrow arrow, BukkitWorldConfiguration wcfg) {
58+
List<PotionEffect> effects = new ArrayList<>();
59+
PotionType potionType = arrow.getBasePotionType();
60+
if (potionType != null) {
61+
effects.addAll(potionType.getPotionEffects());
62+
}
63+
effects.addAll(arrow.getCustomEffects());
64+
for (PotionEffect potionEffect : effects) {
65+
if (wcfg.blockPotions.contains(potionEffect.getType())) {
66+
return potionEffect.getType();
67+
}
68+
}
69+
return null;
70+
}
71+
72+
5373
@EventHandler
5474
public void onProjectile(DamageEntityEvent event) {
55-
if (event.getOriginalEvent() instanceof EntityDamageByEntityEvent) {
56-
EntityDamageByEntityEvent originalEvent = (EntityDamageByEntityEvent) event.getOriginalEvent();
57-
if (Entities.isPotionArrow(originalEvent.getDamager())) { // should take care of backcompat
58-
BukkitWorldConfiguration wcfg = getWorldConfig(event.getWorld());
59-
PotionEffectType blockedEffect = null;
60-
if (originalEvent.getDamager() instanceof SpectralArrow) {
61-
if (wcfg.blockPotions.contains(PotionEffectType.GLOWING)) {
62-
blockedEffect = PotionEffectType.GLOWING;
63-
}
64-
} else if (originalEvent.getDamager() instanceof Arrow) {
65-
Arrow tippedArrow = (Arrow) originalEvent.getDamager();
66-
PotionEffectType baseEffect = tippedArrow.getBasePotionData().getType().getEffectType();
67-
if (wcfg.blockPotions.contains(baseEffect)) {
68-
blockedEffect = baseEffect;
69-
} else {
70-
for (PotionEffect potionEffect : tippedArrow.getCustomEffects()) {
71-
if (wcfg.blockPotions.contains(potionEffect.getType())) {
72-
blockedEffect = potionEffect.getType();
73-
break;
74-
}
75-
}
76-
}
77-
}
78-
if (blockedEffect != null) {
79-
Player player = event.getCause().getFirstPlayer();
80-
if (player != null) {
81-
if (getPlugin().hasPermission(player, "worldguard.override.potions")) {
82-
return;
83-
}
84-
player.sendMessage(ChatColor.RED + "Sorry, arrows with "
85-
+ blockedEffect.getName() + " are presently disabled.");
86-
}
87-
event.setCancelled(true);
75+
if (!(event.getOriginalEvent() instanceof EntityDamageByEntityEvent originalEvent)) {
76+
return;
77+
}
78+
if (!Entities.isPotionArrow(originalEvent.getDamager())) {
79+
return;
80+
}
81+
82+
BukkitWorldConfiguration wcfg = getWorldConfig(event.getWorld());
83+
PotionEffectType blockedEffect = null;
84+
if (originalEvent.getDamager() instanceof SpectralArrow) {
85+
if (wcfg.blockPotions.contains(PotionEffectType.GLOWING)) {
86+
blockedEffect = PotionEffectType.GLOWING;
87+
}
88+
} else if (originalEvent.getDamager() instanceof Arrow arrow) {
89+
blockedEffect = getBlockedEffectByArrow(arrow, wcfg);
90+
}
91+
if (blockedEffect != null) {
92+
Player player = event.getCause().getFirstPlayer();
93+
if (player != null) {
94+
if (getPlugin().hasPermission(player, "worldguard.override.potions")) {
95+
return;
8896
}
97+
player.sendMessage(ChatColor.RED + "Sorry, arrows with "
98+
+ blockedEffect.getName() + " are presently disabled.");
8999
}
100+
event.setCancelled(true);
90101
}
91102
}
92103

@@ -104,25 +115,20 @@ public void onItemInteract(UseItemEvent event) {
104115
if (!wcfg.blockPotions.isEmpty()) {
105116
PotionEffectType blockedEffect = null;
106117

107-
PotionMeta meta;
108-
if (item.getItemMeta() instanceof PotionMeta) {
109-
meta = ((PotionMeta) item.getItemMeta());
110-
} else {
111-
return; // ok...?
118+
if (!(item.getItemMeta() instanceof PotionMeta meta)) {
119+
return;
112120
}
113121

114122
// Find the first blocked effect
115-
PotionEffectType baseEffect = meta.getBasePotionData().getType().getEffectType();
116-
if (wcfg.blockPotions.contains(baseEffect)) {
117-
blockedEffect = baseEffect;
123+
List<PotionEffect> effects = new ArrayList<>();
124+
if (meta.getBasePotionType() != null) {
125+
effects.addAll(meta.getBasePotionType().getPotionEffects());
118126
}
119-
120-
if (blockedEffect == null && meta.hasCustomEffects()) {
121-
for (PotionEffect effect : meta.getCustomEffects()) {
122-
if (wcfg.blockPotions.contains(effect.getType())) {
123-
blockedEffect = effect.getType();
124-
break;
125-
}
127+
effects.addAll(meta.getCustomEffects());
128+
for (PotionEffect potionEffect : effects) {
129+
if (wcfg.blockPotions.contains(potionEffect.getType())) {
130+
blockedEffect = potionEffect.getType();
131+
break;
126132
}
127133
}
128134

worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/listener/EventAbstractionListener.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,6 @@
146146
import org.bukkit.inventory.ItemStack;
147147
import org.bukkit.plugin.PluginManager;
148148
import org.bukkit.potion.PotionEffect;
149-
import org.bukkit.potion.PotionEffectType;
150149
import org.bukkit.projectiles.ProjectileSource;
151150
import org.bukkit.util.Vector;
152151

@@ -1087,9 +1086,9 @@ public void onLingeringSplash(LingeringPotionSplashEvent event) {
10871086
public void onLingeringApply(AreaEffectCloudApplyEvent event) {
10881087
AreaEffectCloud entity = event.getEntity();
10891088
List<PotionEffect> effects = new ArrayList<>();
1090-
PotionEffectType baseEffectType = entity.getBasePotionData().getType().getEffectType();
1091-
if (baseEffectType != null) {
1092-
effects.add(new PotionEffect(baseEffectType, 0, 0));
1089+
List<PotionEffect> baseEffectTypes = entity.getBasePotionType() == null ? null : entity.getBasePotionType().getPotionEffects();
1090+
if (baseEffectTypes != null) {
1091+
effects.addAll(baseEffectTypes);
10931092
}
10941093
if (entity.hasCustomEffects()) {
10951094
effects.addAll(entity.getCustomEffects());
@@ -1174,7 +1173,7 @@ private static <T extends Event & Cancellable> void handleBlockRightClick(T even
11741173

11751174
if (item != null && item.getType() == Material.END_CRYSTAL) { /*&& placed.getType() == Material.BEDROCK) {*/ // in vanilla you can only place them on bedrock but who knows what plugins will add
11761175
// may be overprotective as a result, but better than being underprotective
1177-
Events.fireToCancel(event, new SpawnEntityEvent(event, cause, placed.getLocation().add(0.5, 0, 0.5), EntityType.ENDER_CRYSTAL));
1176+
Events.fireToCancel(event, new SpawnEntityEvent(event, cause, placed.getLocation().add(0.5, 0, 0.5), EntityType.END_CRYSTAL));
11781177
return;
11791178
}
11801179

worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/listener/PlayerMoveListener.java

Lines changed: 9 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
import com.sk89q.worldguard.bukkit.WorldGuardPlugin;
2626
import com.sk89q.worldguard.session.MoveType;
2727
import com.sk89q.worldguard.session.Session;
28-
import io.papermc.lib.PaperLib;
2928
import org.bukkit.Bukkit;
3029
import org.bukkit.Location;
3130
import org.bukkit.entity.AbstractHorse;
@@ -34,14 +33,13 @@
3433
import org.bukkit.entity.Player;
3534
import org.bukkit.event.EventHandler;
3635
import org.bukkit.event.EventPriority;
37-
import org.bukkit.event.Listener;
36+
import org.bukkit.event.entity.EntityMountEvent;
3837
import org.bukkit.event.player.PlayerMoveEvent;
3938
import org.bukkit.event.player.PlayerQuitEvent;
4039
import org.bukkit.event.player.PlayerRespawnEvent;
4140
import org.bukkit.event.vehicle.VehicleEnterEvent;
4241
import org.bukkit.plugin.PluginManager;
4342
import org.bukkit.util.Vector;
44-
import org.spigotmc.event.entity.EntityMountEvent;
4543

4644
public class PlayerMoveListener extends AbstractListener {
4745

@@ -54,9 +52,6 @@ public void registerEvents() {
5452
if (WorldGuard.getInstance().getPlatform().getGlobalStateManager().usePlayerMove) {
5553
PluginManager pm = getPlugin().getServer().getPluginManager();
5654
pm.registerEvents(this, getPlugin());
57-
if (PaperLib.isSpigot()) {
58-
pm.registerEvents(new EntityMountListener(), getPlugin());
59-
}
6055
}
6156
}
6257

@@ -152,16 +147,14 @@ public void onPlayerQuit(PlayerQuitEvent event) {
152147
session.uninitialize(localPlayer);
153148
}
154149

155-
private class EntityMountListener implements Listener {
156-
@EventHandler
157-
public void onEntityMount(EntityMountEvent event) {
158-
Entity entity = event.getEntity();
159-
if (entity instanceof Player) {
160-
LocalPlayer player = getPlugin().wrapPlayer((Player) entity);
161-
Session session = WorldGuard.getInstance().getPlatform().getSessionManager().get(player);
162-
if (null != session.testMoveTo(player, BukkitAdapter.adapt(event.getMount().getLocation()), MoveType.EMBARK, true)) {
163-
event.setCancelled(true);
164-
}
150+
@EventHandler
151+
public void onEntityMount(EntityMountEvent event) {
152+
Entity entity = event.getEntity();
153+
if (entity instanceof Player) {
154+
LocalPlayer player = getPlugin().wrapPlayer((Player) entity);
155+
Session session = WorldGuard.getInstance().getPlatform().getSessionManager().get(player);
156+
if (null != session.testMoveTo(player, BukkitAdapter.adapt(event.getMount().getLocation()), MoveType.EMBARK, true)) {
157+
event.setCancelled(true);
165158
}
166159
}
167160
}

worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/listener/RegionFlagsListener.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ public void onPlaceBlock(final PlaceBlockEvent event) {
6969
}
7070
}
7171

72-
if (event.getCause().find(EntityType.SNOWMAN) != null) {
72+
if (event.getCause().find(EntityType.SNOW_GOLEM) != null) {
7373
event.filter(testState(query, Flags.SNOWMAN_TRAILS), false);
7474
}
7575

@@ -100,7 +100,7 @@ public void onBreakBlock(final BreakBlockEvent event) {
100100
event.filter(testState(query, Flags.ENDERDRAGON_BLOCK_DAMAGE), config.explosionFlagCancellation);
101101
}
102102

103-
if (event.getCause().find(EntityType.ENDER_CRYSTAL) != null) { // EnderCrystal
103+
if (event.getCause().find(EntityType.END_CRYSTAL) != null) { // EnderCrystal
104104
event.filter(testState(query, Flags.OTHER_EXPLOSION), config.explosionFlagCancellation);
105105
}
106106

worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/listener/RegionProtectionListener.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,7 @@ public void onBreakBlock(final BreakBlockEvent event) {
218218
String what;
219219

220220
/* TNT */
221-
if (event.getCause().find(EntityType.PRIMED_TNT, EntityType.MINECART_TNT) != null) {
221+
if (event.getCause().find(EntityType.TNT, EntityType.TNT_MINECART) != null) {
222222
canBreak = query.testBuild(BukkitAdapter.adapt(target), associable, combine(event, Flags.BLOCK_BREAK, Flags.TNT));
223223
what = "use dynamite";
224224

worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/util/Entities.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -127,8 +127,8 @@ public static boolean isBoat(EntityType type) {
127127
*/
128128
public static boolean isMinecart(EntityType type) {
129129
return switch(type) {
130-
case MINECART, MINECART_CHEST, MINECART_COMMAND, MINECART_FURNACE,
131-
MINECART_HOPPER, MINECART_MOB_SPAWNER, MINECART_TNT -> true;
130+
case MINECART, CHEST_MINECART, COMMAND_BLOCK_MINECART, FURNACE_MINECART,
131+
HOPPER_MINECART, SPAWNER_MINECART, TNT_MINECART -> true;
132132
default -> false;
133133
};
134134
}

0 commit comments

Comments
 (0)