@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
    public void onSignChange(final SignChangeEvent changing) {
        final List<String> worldFilters = this.worlds.get(changing.getBlock().getWorld().getName());
        if (worldFilters == null) return;

        final String[] lines = changing.getLines();
        for (final String filterName : worldFilters) {
            if (this.filters.get(filterName).accepts(lines)) {
                this.signChanges.add(new SignChange(filterName, changing.getBlock().getLocation(), System.currentTimeMillis(), lines));
                this.stale = true;
            }
        }
    }