Skip to content

Instantly share code, notes, and snippets.

@DarkSeraphim
Created August 27, 2014 23:09
Show Gist options
  • Save DarkSeraphim/2f9c83ebcd6de900f427 to your computer and use it in GitHub Desktop.
Save DarkSeraphim/2f9c83ebcd6de900f427 to your computer and use it in GitHub Desktop.
Per world events much? Untested, but might work perfectly fine.
package net.darkseraphim.worldlyplugins;
import lombok.Delegate;
import lombok.RequiredArgsConstructor;
import org.bukkit.Bukkit;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
import org.bukkit.plugin.*;
import java.util.logging.Level;
/**
* @author DarkSeraphim
*/
@RequiredArgsConstructor
public class CustomSimplePluginManager implements PluginManager
{
@Delegate(types = PluginManager.class)
private final SimplePluginManager delegate;
protected void fireEvent(Event event)
{
HandlerList handlers = event.getHandlers();
RegisteredListener[] listeners = handlers.getRegisteredListeners();
for (RegisteredListener registration : listeners) {
if (!registration.getPlugin().isEnabled()) {
continue;
}
if(!canFireInWorld(event)){
continue;
}
try {
registration.callEvent(event);
} catch (AuthorNagException ex) {
Plugin plugin = registration.getPlugin();
if (plugin.isNaggable()) {
plugin.setNaggable(false);
Bukkit.getServer().getLogger().log(Level.SEVERE, String.format(
"Nag author(s): '%s' of '%s' about the following: %s",
plugin.getDescription().getAuthors(),
plugin.getDescription().getFullName(),
ex.getMessage()
));
}
} catch (Throwable ex) {
Bukkit.getServer().getLogger().log(Level.SEVERE, "Could not pass event " + event.getEventName() + " to " + registration.getPlugin().getDescription().getFullName(), ex);
}
}
}
private boolean canFireInWorld(Event event)
{
// This requires a some sorting out
return true;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment