@EventHandler(ignoreCancelled = true) public void onBlockPlace(BlockPlaceEvent event) { if (event instanceof BlockMultiPlaceEvent) { BlockMultiPlaceEvent multi = (BlockMultiPlaceEvent) event; for (BlockState state : multi.getReplacedBlockStates()) { this.post(event, state, state.getBlock().getState(), event.getPlayer()); } } else { this.post(event, event.getBlockReplacedState(), event.getBlock().getState(), event.getPlayer()); } }
@EventWrapper public void onBlockPlace(final BlockPlaceEvent event) { if(event instanceof BlockMultiPlaceEvent) { for(BlockState oldState : ((BlockMultiPlaceEvent) event).getReplacedBlockStates()) { callEvent(event, oldState, oldState.getBlock().getState(), event.getPlayer()); } } else { callEvent(event, event.getBlockReplacedState(), event.getBlock().getState(), event.getPlayer()); } }
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onBlockMultiPlace(BlockMultiPlaceEvent event) { for (BlockState state : event.getReplacedBlockStates()) { RollbackAgent.checkBlockChange(state.getLocation(), state.getLocation().getBlock().getState(), event); } RollbackAgent.checkBlockChange(event.getBlock().getLocation(), event.getBlock().getState(), event); }
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) public void onPlayerBlockPlace(final BlockMultiPlaceEvent e) { if (DEBUG) { plugin.getLogger().info("DEBUG: " + e.getEventName()); if (e.getPlayer() == null) { plugin.getLogger().info("DEBUG: player is null"); } else { plugin.getLogger().info("DEBUG: block placed by " + e.getPlayer().getName()); } plugin.getLogger().info("DEBUG: Block is " + e.getBlock().toString()); } if (Settings.allowAutoActivator && e.getPlayer().getName().equals("[CoFH]")) { return; } // plugin.getLogger().info(e.getEventName()); if (Util.inWorld(e.getPlayer())) { // This permission bypasses protection if (e.getPlayer().isOp() || VaultHelper.hasPerm(e.getPlayer(), Settings.PERMPREFIX + "mod.bypassprotect")) { return; } Island island = plugin.getIslands().getProtectedIslandAt(e.getBlock().getLocation()); if (island == null) { if (!Settings.defaultWorldSettings.get(SettingsFlag.PLACE_BLOCKS)) { Util.sendMessage(e.getPlayer(), plugin.getLocale(e.getPlayer().getUniqueId()).get("island.protected")); e.setCancelled(true); } return; } // Island exists if (island.getFlag(SettingsFlag.PLACE_BLOCKS) || island.getMembers().contains(e.getPlayer().getUniqueId())) { // Check how many placed //plugin.getLogger().info("DEBUG: block placed " + e.getBlock().getType()); String type = e.getBlock().getType().toString(); if (!e.getBlock().getState().getClass().getName().endsWith("CraftBlockState") // Not all blocks have that type of class, so we have to do some explicit checking... || e.getBlock().getType().equals(Material.REDSTONE_COMPARATOR_OFF) || type.endsWith("BANNER") // Avoids V1.7 issues || e.getBlock().getType().equals(Material.ENDER_CHEST) || e.getBlock().getType().equals(Material.ENCHANTMENT_TABLE) || e.getBlock().getType().equals(Material.DAYLIGHT_DETECTOR) || e.getBlock().getType().equals(Material.FLOWER_POT)){ // tile entity placed if (Settings.limitedBlocks.containsKey(type) && Settings.limitedBlocks.get(type) > -1) { int count = island.getTileEntityCount(e.getBlock().getType(),e.getBlock().getWorld()); if (Settings.limitedBlocks.get(type) <= count) { Util.sendMessage(e.getPlayer(), (plugin.getLocale(e.getPlayer().getUniqueId()).get("moblimits.entity").replace("[entity]", Util.prettifyText(type))).replace("[number]", String.valueOf(Settings.limitedBlocks.get(type)))); e.setCancelled(true); return; } } } return; } // Outside of protection area or visitor Util.sendMessage(e.getPlayer(), plugin.getLocale(e.getPlayer().getUniqueId()).get("island.protected")); e.setCancelled(true); } }
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) public void onPlayerBlockPlace(final BlockMultiPlaceEvent e) { if (DEBUG) { plugin.getLogger().info("DEBUG: " + e.getEventName()); if (e.getPlayer() == null) { plugin.getLogger().info("DEBUG: player is null"); } else { plugin.getLogger().info("DEBUG: block placed by " + e.getPlayer().getName()); } plugin.getLogger().info("DEBUG: Block is " + e.getBlock().toString()); } if (Settings.allowedFakePlayers.contains(e.getPlayer().getName())) return; // plugin.getLogger().info(e.getEventName()); if (IslandGuard.inWorld(e.getPlayer())) { // This permission bypasses protection if (e.getPlayer().isOp() || VaultHelper.checkPerm(e.getPlayer(), Settings.PERMPREFIX + "mod.bypassprotect")) { return; } Island island = plugin.getGrid().getProtectedIslandAt(e.getBlock().getLocation()); if (island == null) { if (!Settings.defaultWorldSettings.get(SettingsFlag.PLACE_BLOCKS)) { Util.sendMessage(e.getPlayer(), ChatColor.RED + plugin.myLocale(e.getPlayer().getUniqueId()).islandProtected); e.setCancelled(true); } return; } // Island exists if (island.getIgsFlag(SettingsFlag.PLACE_BLOCKS) || island.getMembers().contains(e.getPlayer().getUniqueId())) { // Check how many placed //plugin.getLogger().info("DEBUG: block placed " + e.getBlock().getType()); String type = e.getBlock().getType().toString(); if (!e.getBlock().getState().getClass().getName().endsWith("CraftBlockState") // Not all blocks have that type of class, so we have to do some explicit checking... || e.getBlock().getType().equals(Material.REDSTONE_COMPARATOR_OFF) || type.endsWith("BANNER") // Avoids V1.7 issues || e.getBlock().getType().equals(Material.ENDER_CHEST) || e.getBlock().getType().equals(Material.ENCHANTMENT_TABLE) || e.getBlock().getType().equals(Material.DAYLIGHT_DETECTOR) || e.getBlock().getType().equals(Material.FLOWER_POT)){ // tile entity placed if (Settings.limitedBlocks.containsKey(type) && Settings.limitedBlocks.get(type) > -1) { int count = island.getTileEntityCount(e.getBlock().getType(),e.getBlock().getWorld()); if (Settings.limitedBlocks.get(type) <= count) { Util.sendMessage(e.getPlayer(), ChatColor.RED + (plugin.myLocale(e.getPlayer().getUniqueId()).entityLimitReached.replace("[entity]", Util.prettifyText(type))).replace("[number]", String.valueOf(Settings.limitedBlocks.get(type)))); e.setCancelled(true); return; } } } return; } // Outside of protection area or visitor Util.sendMessage(e.getPlayer(), ChatColor.RED + plugin.myLocale(e.getPlayer().getUniqueId()).islandProtected); e.setCancelled(true); } }