Skip to content

Commit

Permalink
Initial update to 1.14.
Browse files Browse the repository at this point in the history
  • Loading branch information
wizjany committed Jun 5, 2019
1 parent d019e43 commit a0741f9
Show file tree
Hide file tree
Showing 10 changed files with 232 additions and 233 deletions.
Expand Up @@ -91,6 +91,7 @@ public final class Flags {
public static final StateFlag WITHER_DAMAGE = register(new StateFlag("wither-damage", true)); public static final StateFlag WITHER_DAMAGE = register(new StateFlag("wither-damage", true));
public static final StateFlag ENDER_BUILD = register(new StateFlag("enderman-grief", true)); public static final StateFlag ENDER_BUILD = register(new StateFlag("enderman-grief", true));
public static final StateFlag SNOWMAN_TRAILS = register(new StateFlag("snowman-trails", true)); public static final StateFlag SNOWMAN_TRAILS = register(new StateFlag("snowman-trails", true));
public static final StateFlag RAVAGER_RAVAGE = register(new StateFlag("ravager-grief", true));
public static final StateFlag ENTITY_PAINTING_DESTROY = register(new StateFlag("entity-painting-destroy", true)); public static final StateFlag ENTITY_PAINTING_DESTROY = register(new StateFlag("entity-painting-destroy", true));
public static final StateFlag ENTITY_ITEM_FRAME_DESTROY = register(new StateFlag("entity-item-frame-destroy", true)); public static final StateFlag ENTITY_ITEM_FRAME_DESTROY = register(new StateFlag("entity-item-frame-destroy", true));


Expand Down
2 changes: 1 addition & 1 deletion worldguard-legacy/build.gradle
Expand Up @@ -10,7 +10,7 @@ repositories {


dependencies { dependencies {
compile project(path: ':worldguard-core', configuration: 'shadow') compile project(path: ':worldguard-core', configuration: 'shadow')
api 'org.bukkit:bukkit:1.13-R0.1-SNAPSHOT' api 'org.bukkit:bukkit:1.14.2-R0.1-SNAPSHOT'
api ('com.sk89q.worldedit:worldedit-bukkit:7.0.0-SNAPSHOT') { api ('com.sk89q.worldedit:worldedit-bukkit:7.0.0-SNAPSHOT') {
exclude group: 'io.papermc', module: 'paperlib' exclude group: 'io.papermc', module: 'paperlib'
} }
Expand Down
Expand Up @@ -19,16 +19,16 @@


package com.sk89q.worldguard.bukkit.listener; package com.sk89q.worldguard.bukkit.listener;


import com.google.common.base.Function;
import org.bukkit.block.Block; import org.bukkit.block.Block;
import org.bukkit.block.BlockState; import org.bukkit.block.BlockState;


import javax.annotation.Nullable; import javax.annotation.Nullable;


class BlockStateAsBlockFunction implements Function<BlockState, Block> { final class BlockStateAsBlockFunction {
private BlockStateAsBlockFunction() {
}


@Override static Block apply(@Nullable BlockState blockState) {
public Block apply(@Nullable BlockState blockState) {
return blockState != null ? blockState.getBlock() : null; return blockState != null ? blockState.getBlock() : null;
} }


Expand Down
Expand Up @@ -29,6 +29,7 @@
import com.sk89q.worldguard.bukkit.event.block.UseBlockEvent; import com.sk89q.worldguard.bukkit.event.block.UseBlockEvent;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.Tag;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.block.SignChangeEvent; import org.bukkit.event.block.SignChangeEvent;
Expand Down Expand Up @@ -135,15 +136,15 @@ public void onSignChange(SignChangeEvent event) {
BukkitWorldConfiguration wcfg = (BukkitWorldConfiguration) getWorldConfig(WorldGuardPlugin.inst().wrapPlayer(player)); BukkitWorldConfiguration wcfg = (BukkitWorldConfiguration) getWorldConfig(WorldGuardPlugin.inst().wrapPlayer(player));


if (wcfg.signChestProtection) { if (wcfg.signChestProtection) {
if (event.getLine(0).equalsIgnoreCase("[Lock]")) { if ("[Lock]".equalsIgnoreCase(event.getLine(0))) {
if (wcfg.isChestProtectedPlacement(BukkitAdapter.adapt(event.getBlock().getLocation()), WorldGuardPlugin.inst().wrapPlayer(player))) { if (wcfg.isChestProtectedPlacement(BukkitAdapter.adapt(event.getBlock().getLocation()), WorldGuardPlugin.inst().wrapPlayer(player))) {
player.sendMessage(ChatColor.DARK_RED + "You do not own the adjacent chest."); player.sendMessage(ChatColor.DARK_RED + "You do not own the adjacent chest.");
event.getBlock().breakNaturally(); event.getBlock().breakNaturally();
event.setCancelled(true); event.setCancelled(true);
return; return;
} }


if (event.getBlock().getType() != Material.SIGN) { if (!Tag.STANDING_SIGNS.isTagged(event.getBlock().getType())) {
player.sendMessage(ChatColor.RED player.sendMessage(ChatColor.RED
+ "The [Lock] sign must be a sign post, not a wall sign."); + "The [Lock] sign must be a sign post, not a wall sign.");


Expand All @@ -152,7 +153,7 @@ public void onSignChange(SignChangeEvent event) {
return; return;
} }


if (!event.getLine(1).equalsIgnoreCase(player.getName())) { if (!player.getName().equalsIgnoreCase(event.getLine(1))) {
player.sendMessage(ChatColor.RED player.sendMessage(ChatColor.RED
+ "The first owner line must be your name."); + "The first owner line must be your name.");


Expand All @@ -164,7 +165,7 @@ public void onSignChange(SignChangeEvent event) {
Material below = event.getBlock().getRelative(0, -1, 0).getType(); Material below = event.getBlock().getRelative(0, -1, 0).getType();


if (below == Material.TNT || below == Material.SAND if (below == Material.TNT || below == Material.SAND
|| below == Material.GRAVEL || below == Material.SIGN) { || below == Material.GRAVEL || Tag.STANDING_SIGNS.isTagged(below)) {
player.sendMessage(ChatColor.RED player.sendMessage(ChatColor.RED
+ "That is not a safe block that you're putting this sign on."); + "That is not a safe block that you're putting this sign on.");


Expand All @@ -178,7 +179,7 @@ public void onSignChange(SignChangeEvent event) {
+ "A chest or double chest above is now protected."); + "A chest or double chest above is now protected.");
} }
} else if (!wcfg.disableSignChestProtectionCheck) { } else if (!wcfg.disableSignChestProtectionCheck) {
if (event.getLine(0).equalsIgnoreCase("[Lock]")) { if ("[Lock]".equalsIgnoreCase(event.getLine(0))) {
player.sendMessage(ChatColor.RED player.sendMessage(ChatColor.RED
+ "WorldGuard's sign chest protection is disabled."); + "WorldGuard's sign chest protection is disabled.");


Expand Down
Expand Up @@ -21,7 +21,6 @@


import static com.sk89q.worldguard.bukkit.cause.Cause.create; import static com.sk89q.worldguard.bukkit.cause.Cause.create;


import com.google.common.collect.Lists;
import com.sk89q.worldedit.bukkit.BukkitAdapter; import com.sk89q.worldedit.bukkit.BukkitAdapter;
import com.sk89q.worldguard.WorldGuard; import com.sk89q.worldguard.WorldGuard;
import com.sk89q.worldguard.bukkit.BukkitWorldConfiguration; import com.sk89q.worldguard.bukkit.BukkitWorldConfiguration;
Expand Down Expand Up @@ -70,7 +69,6 @@
import org.bukkit.entity.EntityType; import org.bukkit.entity.EntityType;
import org.bukkit.entity.FallingBlock; import org.bukkit.entity.FallingBlock;
import org.bukkit.entity.Item; import org.bukkit.entity.Item;
import org.bukkit.entity.LingeringPotion;
import org.bukkit.entity.LivingEntity; import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.entity.ThrownPotion; import org.bukkit.entity.ThrownPotion;
Expand Down Expand Up @@ -126,9 +124,11 @@
import org.bukkit.event.player.PlayerItemConsumeEvent; import org.bukkit.event.player.PlayerItemConsumeEvent;
import org.bukkit.event.player.PlayerPickupItemEvent; import org.bukkit.event.player.PlayerPickupItemEvent;
import org.bukkit.event.player.PlayerShearEntityEvent; import org.bukkit.event.player.PlayerShearEntityEvent;
import org.bukkit.event.player.PlayerTakeLecternBookEvent;
import org.bukkit.event.player.PlayerUnleashEntityEvent; import org.bukkit.event.player.PlayerUnleashEntityEvent;
import org.bukkit.event.vehicle.VehicleDamageEvent; import org.bukkit.event.vehicle.VehicleDamageEvent;
import org.bukkit.event.vehicle.VehicleDestroyEvent; import org.bukkit.event.vehicle.VehicleDestroyEvent;
import org.bukkit.event.world.PortalCreateEvent;
import org.bukkit.event.world.StructureGrowEvent; import org.bukkit.event.world.StructureGrowEvent;
import org.bukkit.inventory.EquipmentSlot; import org.bukkit.inventory.EquipmentSlot;
import org.bukkit.inventory.InventoryHolder; import org.bukkit.inventory.InventoryHolder;
Expand All @@ -138,6 +138,7 @@


import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;


import javax.annotation.Nullable; import javax.annotation.Nullable;


Expand Down Expand Up @@ -174,10 +175,7 @@ public void onBlockBreak(BlockBreakEvent event) {


@EventHandler(ignoreCancelled = true) @EventHandler(ignoreCancelled = true)
public void onBlockMultiPlace(BlockMultiPlaceEvent event) { public void onBlockMultiPlace(BlockMultiPlaceEvent event) {
List<Block> blocks = new ArrayList<>(); List<Block> blocks = event.getReplacedBlockStates().stream().map(BlockStateAsBlockFunction::apply).collect(Collectors.toList());
for (BlockState bs : event.getReplacedBlockStates()) {
blocks.add(bs.getBlock());
}
Events.fireToCancel(event, new PlaceBlockEvent(event, create(event.getPlayer()), Events.fireToCancel(event, new PlaceBlockEvent(event, create(event.getPlayer()),
event.getBlock().getWorld(), blocks, event.getBlock().getType())); event.getBlock().getWorld(), blocks, event.getBlock().getType()));
} }
Expand All @@ -188,7 +186,7 @@ public void onBlockPlace(BlockPlaceEvent event) {
BlockState previousState = event.getBlockReplacedState(); BlockState previousState = event.getBlockReplacedState();


// Some blocks, like tall grass and fire, get replaced // Some blocks, like tall grass and fire, get replaced
if (previousState.getType() != Material.AIR) { if (previousState.getType() != Material.AIR && previousState.getType() != event.getBlockReplacedState().getType()) {
Events.fireToCancel(event, new BreakBlockEvent(event, create(event.getPlayer()), previousState.getLocation(), previousState.getType())); Events.fireToCancel(event, new BreakBlockEvent(event, create(event.getPlayer()), previousState.getLocation(), previousState.getType()));
} }


Expand Down Expand Up @@ -240,7 +238,7 @@ public void onBlockBurn(BlockBurnEvent event) {
@EventHandler(ignoreCancelled = true) @EventHandler(ignoreCancelled = true)
public void onStructureGrowEvent(StructureGrowEvent event) { public void onStructureGrowEvent(StructureGrowEvent event) {
int originalCount = event.getBlocks().size(); int originalCount = event.getBlocks().size();
List<Block> blockList = Lists.transform(event.getBlocks(), new BlockStateAsBlockFunction()); List<Block> blockList = event.getBlocks().stream().map(BlockStateAsBlockFunction::apply).collect(Collectors.toList());


Player player = event.getPlayer(); Player player = event.getPlayer();
if (player != null) { if (player != null) {
Expand All @@ -254,8 +252,6 @@ public void onStructureGrowEvent(StructureGrowEvent event) {
} }
} }


// TODO: Handle EntityCreatePortalEvent?

@EventHandler(ignoreCancelled = true) @EventHandler(ignoreCancelled = true)
public void onEntityChangeBlock(EntityChangeBlockEvent event) { public void onEntityChangeBlock(EntityChangeBlockEvent event) {
Block block = event.getBlock(); Block block = event.getBlock();
Expand All @@ -269,8 +265,9 @@ public void onEntityChangeBlock(EntityChangeBlockEvent event) {


// Fire two events: one as BREAK and one as PLACE // Fire two events: one as BREAK and one as PLACE
if (event.getTo() != Material.AIR && event.getBlock().getType() != Material.AIR) { if (event.getTo() != Material.AIR && event.getBlock().getType() != Material.AIR) {
Events.fireToCancel(event, new BreakBlockEvent(event, create(entity), block)); if (!Events.fireToCancel(event, new BreakBlockEvent(event, create(entity), block))) {
Events.fireToCancel(event, new PlaceBlockEvent(event, create(entity), block.getLocation(), to)); Events.fireToCancel(event, new PlaceBlockEvent(event, create(entity), block.getLocation(), to));
}
} else { } else {
if (event.getTo() == Material.AIR) { if (event.getTo() == Material.AIR) {
// Track the source so later we can create a proper chain of causes // Track the source so later we can create a proper chain of causes
Expand Down Expand Up @@ -305,11 +302,6 @@ public void onEntityChangeBlock(EntityChangeBlockEvent event) {
@EventHandler(ignoreCancelled = true) @EventHandler(ignoreCancelled = true)
public void onEntityExplode(EntityExplodeEvent event) { public void onEntityExplode(EntityExplodeEvent event) {
Entity entity = event.getEntity(); Entity entity = event.getEntity();
if (event.getYield() == 0 && event.blockList().isEmpty()) {
// avoids ender dragon spam
return;
}

Events.fireBulkEventToCancel(event, new BreakBlockEvent(event, create(entity), event.getLocation().getWorld(), event.blockList(), Material.AIR)); Events.fireBulkEventToCancel(event, new BreakBlockEvent(event, create(entity), event.getLocation().getWorld(), event.blockList(), Material.AIR));
} }


Expand Down Expand Up @@ -626,27 +618,7 @@ public void onCreatureSpawn(CreatureSpawnEvent event) {
Events.fireToCancel(event, new SpawnEntityEvent(event, Cause.unknown(), event.getEntity())); Events.fireToCancel(event, new SpawnEntityEvent(event, Cause.unknown(), event.getEntity()));
} }
break; break;
case NATURAL: default:
case JOCKEY:
case CHUNK_GEN:
case SPAWNER:
case LIGHTNING:
case BUILD_SNOWMAN:
case BUILD_IRONGOLEM:
case BUILD_WITHER:
case VILLAGE_DEFENSE:
case VILLAGE_INVASION:
case BREEDING:
case SLIME_SPLIT:
case REINFORCEMENTS:
case NETHER_PORTAL:
case INFECTION:
case CURED:
case OCELOT_BABY:
case SILVERFISH_BLOCK:
case MOUNT:
case CUSTOM:
case DEFAULT:
} }
} }


Expand Down Expand Up @@ -797,7 +769,7 @@ public void onEntityUnleash(EntityUnleashEvent event) {
if (event instanceof PlayerUnleashEntityEvent) { if (event instanceof PlayerUnleashEntityEvent) {
PlayerUnleashEntityEvent playerEvent = (PlayerUnleashEntityEvent) event; PlayerUnleashEntityEvent playerEvent = (PlayerUnleashEntityEvent) event;
Events.fireToCancel(playerEvent, new UseEntityEvent(playerEvent, create(playerEvent.getPlayer()), event.getEntity())); Events.fireToCancel(playerEvent, new UseEntityEvent(playerEvent, create(playerEvent.getPlayer()), event.getEntity()));
} // TODO: Raise anyway? }
} }


@EventHandler(ignoreCancelled = true) @EventHandler(ignoreCancelled = true)
Expand Down Expand Up @@ -944,7 +916,7 @@ public void onBlockDispense(BlockDispenseEvent event) {
@EventHandler(ignoreCancelled = true) @EventHandler(ignoreCancelled = true)
public void onLingeringSplash(LingeringPotionSplashEvent event) { public void onLingeringSplash(LingeringPotionSplashEvent event) {
AreaEffectCloud aec = event.getAreaEffectCloud(); AreaEffectCloud aec = event.getAreaEffectCloud();
LingeringPotion potion = event.getEntity(); ThrownPotion potion = event.getEntity();
World world = potion.getWorld(); World world = potion.getWorld();
Cause cause = create(event.getEntity()); Cause cause = create(event.getEntity());


Expand Down Expand Up @@ -981,6 +953,13 @@ public void onBlockExplode(BlockExplodeEvent event) {
Events.fireBulkEventToCancel(event, eventToFire); Events.fireBulkEventToCancel(event, eventToFire);
} }


@EventHandler(ignoreCancelled = true)
public void onTakeLecternBook(PlayerTakeLecternBookEvent event) {
final UseBlockEvent useEvent = new UseBlockEvent(event, create(event.getPlayer()), event.getLectern().getBlock());
useEvent.getRelevantFlags().add(Flags.CHEST_ACCESS);
Events.fireToCancel(event, useEvent);
}

/** /**
* Handle the right click of a block while an item is held. * Handle the right click of a block while an item is held.
* *
Expand Down
Expand Up @@ -109,6 +109,10 @@ public void onBreakBlock(final BreakBlockEvent event) {
if (event.getCause().find(EntityType.ENDERMAN) != null) { if (event.getCause().find(EntityType.ENDERMAN) != null) {
event.filter(testState(query, Flags.ENDER_BUILD), false); event.filter(testState(query, Flags.ENDER_BUILD), false);
} }

if (event.getCause().find(EntityType.RAVAGER) != null) {
event.filter(testState(query, Flags.RAVAGER_RAVAGE), false);
}
} }


@EventHandler(priority = EventPriority.LOW, ignoreCancelled = true) @EventHandler(priority = EventPriority.LOW, ignoreCancelled = true)
Expand All @@ -126,21 +130,18 @@ public void onEntityDamage(EntityDamageEvent event) {
return; return;
} }
} else { } else {
try { if (entity instanceof Player && event.getCause() == DamageCause.FLY_INTO_WALL) {
if (entity instanceof Player && event.getCause() == DamageCause.FLY_INTO_WALL) { LocalPlayer localPlayer = WorldGuardPlugin.inst().wrapPlayer((Player) entity);
LocalPlayer localPlayer = WorldGuardPlugin.inst().wrapPlayer((Player) entity); if (!query.testState(BukkitAdapter.adapt(entity.getLocation()), localPlayer, Flags.FALL_DAMAGE)) {
if (!query.testState(BukkitAdapter.adapt(entity.getLocation()), localPlayer, Flags.FALL_DAMAGE)) { event.setCancelled(true);
event.setCancelled(true); return;
return;
}
} }
} catch (NoSuchFieldError ignored) {
} }
} }


if (event instanceof EntityDamageByEntityEvent) { if (event instanceof EntityDamageByEntityEvent) {
Entity damager = (((EntityDamageByEntityEvent) event)).getDamager(); Entity damager = (((EntityDamageByEntityEvent) event)).getDamager();
if (damager != null && damager.getType() == EntityType.FIREWORK) { if (damager.getType() == EntityType.FIREWORK) {
if (!query.testState(BukkitAdapter.adapt(entity.getLocation()), (RegionAssociable) null, Flags.FIREWORK_DAMAGE)) { if (!query.testState(BukkitAdapter.adapt(entity.getLocation()), (RegionAssociable) null, Flags.FIREWORK_DAMAGE)) {
event.setCancelled(true); event.setCancelled(true);
return; return;
Expand Down
Expand Up @@ -20,6 +20,7 @@
package com.sk89q.worldguard.bukkit.listener; package com.sk89q.worldguard.bukkit.listener;


import com.sk89q.worldedit.bukkit.BukkitAdapter; import com.sk89q.worldedit.bukkit.BukkitAdapter;
import com.sk89q.worldedit.math.BlockVector3;
import com.sk89q.worldguard.LocalPlayer; import com.sk89q.worldguard.LocalPlayer;
import com.sk89q.worldguard.WorldGuard; import com.sk89q.worldguard.WorldGuard;
import com.sk89q.worldguard.bukkit.BukkitWorldConfiguration; import com.sk89q.worldguard.bukkit.BukkitWorldConfiguration;
Expand All @@ -31,11 +32,14 @@
import com.sk89q.worldguard.protection.association.RegionAssociable; import com.sk89q.worldguard.protection.association.RegionAssociable;
import com.sk89q.worldguard.protection.flags.Flags; import com.sk89q.worldguard.protection.flags.Flags;
import com.sk89q.worldguard.protection.flags.StateFlag; import com.sk89q.worldguard.protection.flags.StateFlag;
import com.sk89q.worldguard.protection.managers.RegionManager;
import com.sk89q.worldguard.protection.regions.ProtectedCuboidRegion;
import com.sk89q.worldguard.protection.regions.RegionQuery; import com.sk89q.worldguard.protection.regions.RegionQuery;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.World; import org.bukkit.World;
import org.bukkit.block.Block; import org.bukkit.block.Block;
import org.bukkit.block.BlockState;
import org.bukkit.entity.ArmorStand; import org.bukkit.entity.ArmorStand;
import org.bukkit.entity.Creeper; import org.bukkit.entity.Creeper;
import org.bukkit.entity.EnderCrystal; import org.bukkit.entity.EnderCrystal;
Expand All @@ -62,7 +66,6 @@
import org.bukkit.event.entity.CreeperPowerEvent; import org.bukkit.event.entity.CreeperPowerEvent;
import org.bukkit.event.entity.EntityBreakDoorEvent; import org.bukkit.event.entity.EntityBreakDoorEvent;
import org.bukkit.event.entity.EntityChangeBlockEvent; import org.bukkit.event.entity.EntityChangeBlockEvent;
import org.bukkit.event.entity.EntityCreatePortalEvent;
import org.bukkit.event.entity.EntityDamageByBlockEvent; import org.bukkit.event.entity.EntityDamageByBlockEvent;
import org.bukkit.event.entity.EntityDamageByEntityEvent; import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.event.entity.EntityDamageEvent; import org.bukkit.event.entity.EntityDamageEvent;
Expand All @@ -74,6 +77,7 @@
import org.bukkit.event.entity.ExplosionPrimeEvent; import org.bukkit.event.entity.ExplosionPrimeEvent;
import org.bukkit.event.entity.PigZapEvent; import org.bukkit.event.entity.PigZapEvent;
import org.bukkit.event.entity.PlayerDeathEvent; import org.bukkit.event.entity.PlayerDeathEvent;
import org.bukkit.event.world.PortalCreateEvent;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.projectiles.ProjectileSource; import org.bukkit.projectiles.ProjectileSource;


Expand Down Expand Up @@ -667,14 +671,47 @@ public void onCreatureSpawn(CreatureSpawnEvent event) {
} }


@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
public void onCreatePortal(EntityCreatePortalEvent event) { public void onCreatePortal(PortalCreateEvent event) {
ConfigurationManager cfg = WorldGuard.getInstance().getPlatform().getGlobalStateManager(); ConfigurationManager cfg = WorldGuard.getInstance().getPlatform().getGlobalStateManager();
WorldConfiguration wcfg = cfg.get(BukkitAdapter.adapt(event.getEntity().getWorld())); final com.sk89q.worldedit.world.World world = BukkitAdapter.adapt(event.getWorld());
WorldConfiguration wcfg = cfg.get(world);

if (wcfg.regionNetherPortalProtection
&& event.getReason() == PortalCreateEvent.CreateReason.NETHER_PAIR
&& !event.getBlocks().isEmpty()) {
final RegionManager regionManager = WorldGuard.getInstance().getPlatform().getRegionContainer()
.get(world);
if (regionManager == null) return;
LocalPlayer associable = null;
if (event.getEntity() instanceof Player) {
associable = plugin.wrapPlayer(((Player) event.getEntity()));
}
if (WorldGuard.getInstance().getPlatform().getSessionManager().hasBypass(associable, world)) {
return;
}
BlockVector3 min = null;
BlockVector3 max = null;
for (BlockState block : event.getBlocks()) {
BlockVector3 loc = BlockVector3.at(block.getX(), block.getY(), block.getZ());
min = min == null ? loc : loc.getMinimum(min);
max = max == null ? loc : loc.getMaximum(max);
}
ProtectedCuboidRegion target = new ProtectedCuboidRegion("__portal_check", true, min, max);
final ApplicableRegionSet regions = regionManager.getApplicableRegions(target);
if (!regions.testState(associable, Flags.BUILD, Flags.BLOCK_PLACE)) {
if (associable != null) {
// NB there is no way to cancel the teleport without PTA (since PlayerPortal doesn't have block info)
// removing PTA was a mistake
associable.print("Destination is an a protected area.");
}
event.setCancelled(true);
}
}


switch (event.getEntityType()) { // NOTE: as of right now, bukkit doesn't fire this event for this (despite deprecating EntityCreatePortalEvent for it)
case ENDER_DRAGON: // maybe one day this code will be useful
if (wcfg.blockEnderDragonPortalCreation) event.setCancelled(true); if (event.getEntity() instanceof EnderDragon && wcfg.blockEnderDragonPortalCreation) {
break; event.setCancelled(true);
} }
} }


Expand Down

0 comments on commit a0741f9

Please sign in to comment.