public Boolean throwSignChange(Block theBlock, Player thePlayer, String[] theLines) {
		if (Config.fireBlockBreakPlace() == true) {
			
			BlockBreakEvent b = new BlockBreakEvent(theBlock, thePlayer);
			this.plugin.pluginMan.callEvent(b);
			
			if (b.isCancelled()) {
				plugin.log.info("[BLOCKED] Another plugin blocked the BlockBreak check.");
				return true;
			}

			BlockPlaceEvent p = new BlockPlaceEvent(theBlock, theBlock.getState(), theBlock, null, thePlayer, true);
			
			this.plugin.pluginMan.callEvent(p);
			
			if(p.isCancelled()) {
				plugin.log.info("[BLOCKED] Another plugin blocked the BlockPlace check.");
				return true;
			}
		}

		String[] orginialLines = theLines.clone();

		SignChangeEvent event = new SignChangeEvent(theBlock, thePlayer, theLines);
		this.plugin.pluginMan.callEvent(event);

		for (int i = 0; i < theLines.length; i++) {
			if (!strip(theLines[i]).equalsIgnoreCase(strip(orginialLines[i]))) {
				plugin.log.info("[BLOCKED] Another plugin modified line " + (i + 1) + ": " + strip(orginialLines[i]) + " to " + strip(theLines[i]));
				return true;
			}
		}	

		return Boolean.valueOf(event.isCancelled());
	}