diff --git a/api/src/main/java/com/seibel/distanthorizons/api/methods/events/abstractEvents/DhApiAfterDhInitEvent.java b/api/src/main/java/com/seibel/distanthorizons/api/methods/events/abstractEvents/DhApiAfterDhInitEvent.java index 076902a0b..f3e78e8c5 100644 --- a/api/src/main/java/com/seibel/distanthorizons/api/methods/events/abstractEvents/DhApiAfterDhInitEvent.java +++ b/api/src/main/java/com/seibel/distanthorizons/api/methods/events/abstractEvents/DhApiAfterDhInitEvent.java @@ -2,6 +2,7 @@ package com.seibel.distanthorizons.api.methods.events.abstractEvents; import com.seibel.distanthorizons.api.methods.events.interfaces.IDhApiEvent; import com.seibel.distanthorizons.api.objects.events.DhApiEventDefinition; +import com.seibel.distanthorizons.coreapi.events.ApiEventDefinitionHandler; /** * @author James Seibel @@ -23,7 +24,11 @@ public abstract class DhApiAfterDhInitEvent implements IDhApiEvent this.afterDistantHorizonsInit(); return false; } - + + /** + * Note: when creating new events, make sure to bind this definition in {@link ApiEventDefinitionHandler} + * Otherwise a bunch of runtime errors will be thrown. + */ public final static DhApiEventDefinition EVENT_DEFINITION = new DhApiEventDefinition(false, true); @Override public final DhApiEventDefinition getEventDefinition() { return EVENT_DEFINITION; } diff --git a/api/src/main/java/com/seibel/distanthorizons/api/methods/events/abstractEvents/DhApiAfterRenderEvent.java b/api/src/main/java/com/seibel/distanthorizons/api/methods/events/abstractEvents/DhApiAfterRenderEvent.java index 3e45ad01e..3d8e5f66f 100644 --- a/api/src/main/java/com/seibel/distanthorizons/api/methods/events/abstractEvents/DhApiAfterRenderEvent.java +++ b/api/src/main/java/com/seibel/distanthorizons/api/methods/events/abstractEvents/DhApiAfterRenderEvent.java @@ -3,6 +3,7 @@ package com.seibel.distanthorizons.api.methods.events.abstractEvents; import com.seibel.distanthorizons.api.methods.events.interfaces.IDhApiEvent; import com.seibel.distanthorizons.api.methods.events.sharedParameterObjects.DhApiRenderParam; import com.seibel.distanthorizons.api.objects.events.DhApiEventDefinition; +import com.seibel.distanthorizons.coreapi.events.ApiEventDefinitionHandler; /** * @author James Seibel @@ -25,6 +26,10 @@ public abstract class DhApiAfterRenderEvent implements IDhApiEvent return false; } + /** + * Note: when creating new events, make sure to bind this definition in {@link ApiEventDefinitionHandler} + * Otherwise a bunch of runtime errors will be thrown. + */ public final static DhApiEventDefinition EVENT_DEFINITION = new DhApiEventDefinition(false, true); @Override public final DhApiEventDefinition getEventDefinition() { return EVENT_DEFINITION; } diff --git a/api/src/main/java/com/seibel/distanthorizons/api/methods/events/abstractEvents/DhApiBeforeRenderEvent.java b/api/src/main/java/com/seibel/distanthorizons/api/methods/events/abstractEvents/DhApiBeforeRenderEvent.java index b4371aeee..658291d68 100644 --- a/api/src/main/java/com/seibel/distanthorizons/api/methods/events/abstractEvents/DhApiBeforeRenderEvent.java +++ b/api/src/main/java/com/seibel/distanthorizons/api/methods/events/abstractEvents/DhApiBeforeRenderEvent.java @@ -3,6 +3,7 @@ package com.seibel.distanthorizons.api.methods.events.abstractEvents; import com.seibel.distanthorizons.api.methods.events.interfaces.IDhApiEvent; import com.seibel.distanthorizons.api.methods.events.sharedParameterObjects.DhApiRenderParam; import com.seibel.distanthorizons.api.objects.events.DhApiEventDefinition; +import com.seibel.distanthorizons.coreapi.events.ApiEventDefinitionHandler; /** * @author James Seibel @@ -25,6 +26,10 @@ public abstract class DhApiBeforeRenderEvent implements IDhApiEvent implements @Override public > boolean fireAllEvents(Class abstractEvent, T eventParameterObject) { - try { - boolean cancelEvent = false; - - // if this is a one time event, record that it was called - if (ApiEventDefinitionHandler.INSTANCE.getEventDefinition(abstractEvent).isOneTimeEvent && - !this.firedOneTimeEventParamsByEventInterface.containsKey(abstractEvent)) { - this.firedOneTimeEventParamsByEventInterface.put(abstractEvent, eventParameterObject); - } - - - // fire each bound event - ArrayList eventList = this.getAll(abstractEvent); - for (IDhApiEvent event : eventList) { - if (event != null) { - try { - // fire each event and record if any of them - // request to cancel the event. - cancelEvent |= event.fireEvent(eventParameterObject); - } catch (Exception e) { - LOGGER.error("Exception thrown by event handler [" + event.getClass().getSimpleName() + "] for event type [" + abstractEvent.getSimpleName() + "], error:" + e.getMessage(), e); - } + boolean cancelEvent = false; + + // if this is a one time event, record that it was called + if (ApiEventDefinitionHandler.INSTANCE.getEventDefinition(abstractEvent).isOneTimeEvent && + !this.firedOneTimeEventParamsByEventInterface.containsKey(abstractEvent)) { + this.firedOneTimeEventParamsByEventInterface.put(abstractEvent, eventParameterObject); + } + + + // fire each bound event + ArrayList eventList = this.getAll(abstractEvent); + for (IDhApiEvent event : eventList) { + if (event != null) { + try { + // fire each event and record if any of them + // request to cancel the event. + cancelEvent |= event.fireEvent(eventParameterObject); + } catch (Exception e) { + LOGGER.error("Exception thrown by event handler [" + event.getClass().getSimpleName() + "] for event type [" + abstractEvent.getSimpleName() + "], error:" + e.getMessage(), e); } } - return cancelEvent; - } - catch (Throwable e) - { - //LOGGER.error("Exception thrown while firing events for event type [" + abstractEvent.getSimpleName() + "], error:" + e.getMessage(), e); - return false; } + return cancelEvent; } } diff --git a/api/src/main/java/com/seibel/distanthorizons/coreapi/events/ApiEventDefinitionHandler.java b/api/src/main/java/com/seibel/distanthorizons/coreapi/events/ApiEventDefinitionHandler.java index da92ba5b9..d4764e986 100644 --- a/api/src/main/java/com/seibel/distanthorizons/coreapi/events/ApiEventDefinitionHandler.java +++ b/api/src/main/java/com/seibel/distanthorizons/coreapi/events/ApiEventDefinitionHandler.java @@ -58,6 +58,7 @@ public class ApiEventDefinitionHandler this.setEventDefinition(DhApiLevelLoadEvent.class, DhApiLevelLoadEvent.EVENT_DEFINITION); this.setEventDefinition(DhApiLevelSaveEvent.class, DhApiLevelSaveEvent.EVENT_DEFINITION); this.setEventDefinition(DhApiLevelUnloadEvent.class, DhApiLevelUnloadEvent.EVENT_DEFINITION); + this.setEventDefinition(DhApiDataFileChangedEvent.class, DhApiDataFileChangedEvent.EVENT_DEFINITION); }