diff --git a/api/src/main/java/com/seibel/lod/api/methods/events/DhApiEventRegister.java b/api/src/main/java/com/seibel/lod/api/methods/events/DhApiEventRegister.java index edbba70da..abf5c502c 100644 --- a/api/src/main/java/com/seibel/lod/api/methods/events/DhApiEventRegister.java +++ b/api/src/main/java/com/seibel/lod/api/methods/events/DhApiEventRegister.java @@ -1,6 +1,6 @@ package com.seibel.lod.core.api.external.methods.events; -import com.seibel.lod.core.api.implementation.interfaces.events.IDhApiEvent; +import com.seibel.lod.core.api.implementation.interfaces.events.ICoreDhApiEvent; import com.seibel.lod.core.api.external.items.objects.DhApiResult; import com.seibel.lod.core.handlers.dependencyInjection.DhApiEventInjector; @@ -18,7 +18,7 @@ public class DhApiEventRegister * If multiple of the same eventHandler are added DhApiResult will return * the name of the already added handler and success = false. */ - public static DhApiResult on(Class eventInterface, IDhApiEvent eventHandlerImplementation) + public static DhApiResult on(Class eventInterface, ICoreDhApiEvent eventHandlerImplementation) { try { @@ -36,7 +36,7 @@ public class DhApiEventRegister * If no eventHandler of the given class has been registered the result will return * success = false. */ - public static DhApiResult off(Class eventInterface, Class eventHandlerClass) + public static DhApiResult off(Class eventInterface, Class eventHandlerClass) { if (DhApiEventInjector.INSTANCE.unbind(eventInterface, eventHandlerClass)) { diff --git a/api/src/main/java/com/seibel/lod/api/methods/events/abstractEvents/DhApiAfterDhInitEvent.java b/api/src/main/java/com/seibel/lod/api/methods/events/abstractEvents/DhApiAfterDhInitEvent.java new file mode 100644 index 000000000..03d63c0f3 --- /dev/null +++ b/api/src/main/java/com/seibel/lod/api/methods/events/abstractEvents/DhApiAfterDhInitEvent.java @@ -0,0 +1,17 @@ +package com.seibel.lod.api.methods.events.abstractEvents; + +import com.seibel.lod.api.methods.events.interfaces.IDhApiEvent; +import com.seibel.lod.core.api.external.coreImplementations.objects.events.abstractEvents.CoreDhApiAfterDhInitEvent; + +/** + * @author James Seibel + * @version 2022-9-6 + */ +public abstract class DhApiAfterDhInitEvent + extends CoreDhApiAfterDhInitEvent + implements IDhApiEvent +{ + /** Fired after Distant Horizons finishes its initial setup on Minecraft startup. */ + public abstract void afterDistantHorizonsInit(); + +} \ No newline at end of file diff --git a/api/src/main/java/com/seibel/lod/api/methods/events/abstractEvents/DhApiAfterRenderEvent.java b/api/src/main/java/com/seibel/lod/api/methods/events/abstractEvents/DhApiAfterRenderEvent.java new file mode 100644 index 000000000..e3ff71881 --- /dev/null +++ b/api/src/main/java/com/seibel/lod/api/methods/events/abstractEvents/DhApiAfterRenderEvent.java @@ -0,0 +1,44 @@ +package com.seibel.lod.api.methods.events.abstractEvents; + +import com.seibel.lod.api.methods.events.interfaces.IDhApiEvent; +import com.seibel.lod.api.methods.events.sharedParameterObjects.DhApiRenderParam; +import com.seibel.lod.core.api.external.coreImplementations.objects.events.CoreDhApiRenderParam; +import com.seibel.lod.core.api.external.coreImplementations.objects.events.abstractEvents.CoreDhApiAfterRenderEvent; + +/** + * @author James Seibel + * @version 2022-9-6 + */ +public abstract class DhApiAfterRenderEvent + extends CoreDhApiAfterRenderEvent + implements IDhApiEvent +{ + /** Fired after Distant Horizons finishes rendering fake chunks. */ + public abstract void afterRender(EventParam input); + + + //=========================// + // internal DH API methods // + //=========================// + + @Override + public final boolean fireEvent(CoreEventParam input) + { + afterRender(new EventParam(input)); + return false; + } + + @Override + public final boolean getCancelable() { return false; } + + + //==================// + // parameter object // + //==================// + + public static class EventParam extends DhApiRenderParam + { + public EventParam(CoreEventParam dhApiRenderParam) { super(dhApiRenderParam); } + } + +} \ No newline at end of file diff --git a/api/src/main/java/com/seibel/lod/api/methods/events/abstractEvents/DhApiBeforeDhInitEvent.java b/api/src/main/java/com/seibel/lod/api/methods/events/abstractEvents/DhApiBeforeDhInitEvent.java new file mode 100644 index 000000000..a07f13245 --- /dev/null +++ b/api/src/main/java/com/seibel/lod/api/methods/events/abstractEvents/DhApiBeforeDhInitEvent.java @@ -0,0 +1,34 @@ +package com.seibel.lod.api.methods.events.abstractEvents; + + + +import com.seibel.lod.api.methods.events.interfaces.IDhApiEvent; +import com.seibel.lod.core.api.external.coreImplementations.objects.events.abstractEvents.CoreDhApiBeforeDhInitEvent; + +/** + * @author James Seibel + * @version 2022-9-6 + */ +public abstract class DhApiBeforeDhInitEvent + extends CoreDhApiBeforeDhInitEvent + implements IDhApiEvent +{ + /** Fired before Distant Horizons starts its initial setup on Minecraft startup. */ + public abstract void beforeDistantHorizonsInit(); + + + //=========================// + // internal DH API methods // + //=========================// + + @Override + public final boolean fireEvent(Void ignoredParam) + { + beforeDistantHorizonsInit(); + return false; + } + + @Override + public final boolean getCancelable() { return false; } + +} \ No newline at end of file diff --git a/api/src/main/java/com/seibel/lod/api/methods/events/abstractEvents/DhApiBeforeRenderEvent.java b/api/src/main/java/com/seibel/lod/api/methods/events/abstractEvents/DhApiBeforeRenderEvent.java new file mode 100644 index 000000000..3ed134a2f --- /dev/null +++ b/api/src/main/java/com/seibel/lod/api/methods/events/abstractEvents/DhApiBeforeRenderEvent.java @@ -0,0 +1,45 @@ +package com.seibel.lod.api.methods.events.abstractEvents; + +import com.seibel.lod.api.methods.events.interfaces.IDhApiEvent; +import com.seibel.lod.api.methods.events.sharedParameterObjects.DhApiRenderParam; +import com.seibel.lod.core.api.external.coreImplementations.objects.events.CoreDhApiRenderParam; +import com.seibel.lod.core.api.external.coreImplementations.objects.events.abstractEvents.CoreDhApiAfterRenderEvent; +import com.seibel.lod.core.api.external.coreImplementations.objects.events.abstractEvents.CoreDhApiBeforeRenderEvent; + +/** + * @author James Seibel + * @version 2022-9-6 + */ +public abstract class DhApiBeforeRenderEvent + extends CoreDhApiBeforeRenderEvent + implements IDhApiEvent +{ + /** + * Fired before Distant Horizons renders fake chunks. + * + * @return whether the event should be canceled or not. + */ + public abstract boolean beforeRender(EventParam input); + + + //=========================// + // internal DH API methods // + //=========================// + + @Override + public final boolean fireEvent(CoreEventParam input) { return beforeRender(new EventParam(input)); } + + @Override + public final boolean getCancelable() { return true; } + + + //==================// + // parameter object // + //==================// + + public static class EventParam extends DhApiRenderParam + { + public EventParam(CoreEventParam dhApiRenderParam) { super(dhApiRenderParam); } + } + +} \ No newline at end of file diff --git a/api/src/main/java/com/seibel/lod/api/methods/events/abstractEvents/DhApiLevelLoadEvent.java b/api/src/main/java/com/seibel/lod/api/methods/events/abstractEvents/DhApiLevelLoadEvent.java new file mode 100644 index 000000000..6f4de7d78 --- /dev/null +++ b/api/src/main/java/com/seibel/lod/api/methods/events/abstractEvents/DhApiLevelLoadEvent.java @@ -0,0 +1,47 @@ +package com.seibel.lod.api.methods.events.abstractEvents; + +import com.seibel.lod.api.methods.events.interfaces.IDhApiEvent; +import com.seibel.lod.core.api.external.coreImplementations.objects.events.abstractEvents.CoreDhApiLevelLoadEvent; + +/** + * @author James Seibel + * @version 2022-9-6 + */ +public abstract class DhApiLevelLoadEvent + extends CoreDhApiLevelLoadEvent + implements IDhApiEvent +{ + /** Fired after Distant Horizons loads a new level. */ + public abstract void onLevelLoad(EventParam input); + + + //=========================// + // internal DH API methods // + //=========================// + + @Override + public final boolean fireEvent(CoreEventParam input) + { + onLevelLoad(new EventParam()); + return false; + } + + @Override + public final boolean getCancelable() { return false; } + + + //==================// + // parameter object // + //==================// + + public static class EventParam + { + /** The newly loaded level. */ + //public final IDhApiLevelWrapper levelWrapper; + + + // TODO + //public EventParam(ILevelWrapper newLevelWrapper) { this.levelWrapper = newLevelWrapper; } + } + +} \ No newline at end of file diff --git a/api/src/main/java/com/seibel/lod/api/methods/events/abstractEvents/DhApiLevelSaveEvent.java b/api/src/main/java/com/seibel/lod/api/methods/events/abstractEvents/DhApiLevelSaveEvent.java new file mode 100644 index 000000000..d88467b42 --- /dev/null +++ b/api/src/main/java/com/seibel/lod/api/methods/events/abstractEvents/DhApiLevelSaveEvent.java @@ -0,0 +1,46 @@ +package com.seibel.lod.api.methods.events.abstractEvents; + +import com.seibel.lod.api.methods.events.interfaces.IDhApiEvent; +import com.seibel.lod.core.api.external.coreImplementations.objects.events.abstractEvents.CoreDhApiLevelSaveEvent; + +/** + * @author James Seibel + * @version 2022-9-6 + */ +public abstract class DhApiLevelSaveEvent + extends CoreDhApiLevelSaveEvent + implements IDhApiEvent +{ + /** Fired after Distant Horizons saves LOD data for the server. */ + public abstract void onLevelSave(EventParam input); + + + //=========================// + // internal DH API methods // + //=========================// + + @Override + public final boolean fireEvent(CoreDhApiLevelSaveEvent.CoreEventParam input) + { + onLevelSave(new EventParam()); + return false; + } + + @Override + public final boolean getCancelable() { return false; } + + + //==================// + // parameter object // + //==================// + + public static class EventParam + { + /** The newly loaded level. */ + //public final IDhApiLevelWrapper levelWrapper; + + // TODO + //public EventParam(IDhApiLevelWrapper newLevelWrapper) { this.levelWrapper = newLevelWrapper; } + } + +} \ No newline at end of file diff --git a/api/src/main/java/com/seibel/lod/api/methods/events/abstractEvents/DhApiLevelUnloadEvent.java b/api/src/main/java/com/seibel/lod/api/methods/events/abstractEvents/DhApiLevelUnloadEvent.java new file mode 100644 index 000000000..62e9f90bd --- /dev/null +++ b/api/src/main/java/com/seibel/lod/api/methods/events/abstractEvents/DhApiLevelUnloadEvent.java @@ -0,0 +1,47 @@ +package com.seibel.lod.api.methods.events.abstractEvents; + +import com.seibel.lod.api.methods.events.interfaces.IDhApiEvent; +import com.seibel.lod.core.api.external.coreImplementations.objects.events.abstractEvents.CoreDhApiLevelUnloadEvent; + +/** + * @author James Seibel + * @version 2022-9-6 + */ +public abstract class DhApiLevelUnloadEvent + extends CoreDhApiLevelUnloadEvent + implements IDhApiEvent +{ + /** Fired before Distant Horizons unloads a level. */ + public abstract void onLevelUnload(EventParam input); + + + //=========================// + // internal DH API methods // + //=========================// + + @Override + public final boolean fireEvent(CoreDhApiLevelUnloadEvent.CoreEventParam input) + { + onLevelUnload(new EventParam()); + return false; + } + + @Override + public final boolean getCancelable() { return false; } + + + //==================// + // parameter object // + //==================// + + public static class EventParam + { + /** The recently unloaded level. */ +// public final IDhApiLevelWrapper levelWrapper; + + + // TODO +// public EventParam(IDhApiLevelWrapper newLevelWrapper) { this.levelWrapper = newLevelWrapper; } + } + +} \ No newline at end of file diff --git a/api/src/main/java/com/seibel/lod/api/methods/events/interfaces/IDhApiEvent.java b/api/src/main/java/com/seibel/lod/api/methods/events/interfaces/IDhApiEvent.java new file mode 100644 index 000000000..a952a4d03 --- /dev/null +++ b/api/src/main/java/com/seibel/lod/api/methods/events/interfaces/IDhApiEvent.java @@ -0,0 +1,30 @@ +package com.seibel.lod.api.methods.events.interfaces; + +import com.seibel.lod.core.api.implementation.interfaces.events.ICoreDhApiEvent; +import com.seibel.lod.core.handlers.dependencyInjection.IBindable; + +/** + * A combination of all interfaces required by all + * DH Api events. + * + * @param This is the datatype that will be passed into the + * event handler's method. + * @param This is the datatype that will be passed in from Core + * when the event is fired. + * + * @author James Seibel + * @version 2022-9-6 + */ +public interface IDhApiEvent extends ICoreDhApiEvent, IBindable +{ + /** + * Returns if the event should be automatically unbound + * after firing.
+ * Can be useful for one time setup events or waiting for a specific game state.

+ * + * Defaults to False (the event will not be removed after firing). + */ + @Override + default boolean removeAfterFiring() { return false; }; + +} diff --git a/api/src/main/java/com/seibel/lod/api/items/objects/events/DhApiRenderParam.java b/api/src/main/java/com/seibel/lod/api/methods/events/sharedParameterObjects/DhApiRenderParam.java similarity index 94% rename from api/src/main/java/com/seibel/lod/api/items/objects/events/DhApiRenderParam.java rename to api/src/main/java/com/seibel/lod/api/methods/events/sharedParameterObjects/DhApiRenderParam.java index c00b8b9cc..2473be26e 100644 --- a/api/src/main/java/com/seibel/lod/api/items/objects/events/DhApiRenderParam.java +++ b/api/src/main/java/com/seibel/lod/api/methods/events/sharedParameterObjects/DhApiRenderParam.java @@ -1,4 +1,4 @@ -package com.seibel.lod.api.items.objects.events; +package com.seibel.lod.api.methods.events.sharedParameterObjects; import com.seibel.lod.api.items.objects.math.DhApiMat4f; import com.seibel.lod.core.api.external.coreImplementations.objects.events.CoreDhApiRenderParam; diff --git a/commonInterface/src/main/java/com/seibel/lod/core/api/internal/a7/ClientApi.java b/commonInterface/src/main/java/com/seibel/lod/core/api/internal/a7/ClientApi.java index 55b5ba556..08e9ef0b6 100644 --- a/commonInterface/src/main/java/com/seibel/lod/core/api/internal/a7/ClientApi.java +++ b/commonInterface/src/main/java/com/seibel/lod/core/api/internal/a7/ClientApi.java @@ -21,7 +21,6 @@ package com.seibel.lod.core.api.internal.a7; import com.seibel.lod.core.a7.level.IClientLevel; import com.seibel.lod.core.a7.world.*; -import com.seibel.lod.core.api.external.methods.events.abstractEvents.*; import com.seibel.lod.core.api.external.coreImplementations.objects.events.CoreDhApiRenderParam; import com.seibel.lod.core.api.implementation.wrappers.DhApiLevelWrapper; import com.seibel.lod.core.config.Config; diff --git a/commonInterface/src/main/java/com/seibel/lod/core/api/internal/a7/ServerApi.java b/commonInterface/src/main/java/com/seibel/lod/core/api/internal/a7/ServerApi.java index 77880461c..da6662810 100644 --- a/commonInterface/src/main/java/com/seibel/lod/core/api/internal/a7/ServerApi.java +++ b/commonInterface/src/main/java/com/seibel/lod/core/api/internal/a7/ServerApi.java @@ -29,7 +29,6 @@ import com.seibel.lod.core.api.external.methods.events.abstractEvents.DhApiLevel import com.seibel.lod.core.api.implementation.wrappers.DhApiLevelWrapper; import com.seibel.lod.core.handlers.dependencyInjection.DhApiEventInjector; import com.seibel.lod.core.handlers.dependencyInjection.SingletonInjector; -import com.seibel.lod.core.logging.ConfigBasedLogger; import com.seibel.lod.core.logging.DhLoggerBuilder; import com.seibel.lod.core.wrapperInterfaces.IVersionConstants; import com.seibel.lod.core.wrapperInterfaces.chunk.IChunkWrapper; diff --git a/core/src/main/java/com/seibel/lod/core/api/external/coreImplementations/objects/events/abstractEvents/CoreDhApiAfterDhInitEvent.java b/core/src/main/java/com/seibel/lod/core/api/external/coreImplementations/objects/events/abstractEvents/CoreDhApiAfterDhInitEvent.java new file mode 100644 index 000000000..a6ca1524f --- /dev/null +++ b/core/src/main/java/com/seibel/lod/core/api/external/coreImplementations/objects/events/abstractEvents/CoreDhApiAfterDhInitEvent.java @@ -0,0 +1,12 @@ +package com.seibel.lod.core.api.external.coreImplementations.objects.events.abstractEvents; + +import com.seibel.lod.core.api.implementation.interfaces.events.ICoreDhApiEvent; + +/** + * @author James Seibel + * @version 2022-9-6 + */ +public abstract class CoreDhApiAfterDhInitEvent implements ICoreDhApiEvent +{ + +} \ No newline at end of file diff --git a/core/src/main/java/com/seibel/lod/core/api/external/coreImplementations/objects/events/abstractEvents/CoreDhApiAfterRenderEvent.java b/core/src/main/java/com/seibel/lod/core/api/external/coreImplementations/objects/events/abstractEvents/CoreDhApiAfterRenderEvent.java new file mode 100644 index 000000000..7be516723 --- /dev/null +++ b/core/src/main/java/com/seibel/lod/core/api/external/coreImplementations/objects/events/abstractEvents/CoreDhApiAfterRenderEvent.java @@ -0,0 +1,27 @@ +package com.seibel.lod.core.api.external.coreImplementations.objects.events.abstractEvents; + +import com.seibel.lod.core.api.external.coreImplementations.objects.events.CoreDhApiRenderParam; +import com.seibel.lod.core.api.implementation.interfaces.events.ICoreDhApiEvent; + +/** + * @author James Seibel + * @version 2022-9-6 + */ +public abstract class CoreDhApiAfterRenderEvent implements ICoreDhApiEvent +{ + + //==================// + // parameter object // + //==================// + + public static class CoreEventParam extends CoreDhApiRenderParam + { + public CoreEventParam(CoreDhApiRenderParam dhApiRenderParam) + { + super(dhApiRenderParam.mcProjectionMatrix, dhApiRenderParam.mcModelViewMatrix, + dhApiRenderParam.dhProjectionMatrix, dhApiRenderParam.dhModelViewMatrix, + dhApiRenderParam.partialTicks); + } + } + +} \ No newline at end of file diff --git a/core/src/main/java/com/seibel/lod/core/api/external/coreImplementations/objects/events/abstractEvents/CoreDhApiBeforeDhInitEvent.java b/core/src/main/java/com/seibel/lod/core/api/external/coreImplementations/objects/events/abstractEvents/CoreDhApiBeforeDhInitEvent.java new file mode 100644 index 000000000..e660a23a8 --- /dev/null +++ b/core/src/main/java/com/seibel/lod/core/api/external/coreImplementations/objects/events/abstractEvents/CoreDhApiBeforeDhInitEvent.java @@ -0,0 +1,12 @@ +package com.seibel.lod.core.api.external.coreImplementations.objects.events.abstractEvents; + +import com.seibel.lod.core.api.implementation.interfaces.events.ICoreDhApiEvent; + +/** + * @author James Seibel + * @version 2022-9-6 + */ +public abstract class CoreDhApiBeforeDhInitEvent implements ICoreDhApiEvent +{ + +} \ No newline at end of file diff --git a/core/src/main/java/com/seibel/lod/core/api/external/coreImplementations/objects/events/abstractEvents/CoreDhApiBeforeRenderEvent.java b/core/src/main/java/com/seibel/lod/core/api/external/coreImplementations/objects/events/abstractEvents/CoreDhApiBeforeRenderEvent.java new file mode 100644 index 000000000..219a6c3d6 --- /dev/null +++ b/core/src/main/java/com/seibel/lod/core/api/external/coreImplementations/objects/events/abstractEvents/CoreDhApiBeforeRenderEvent.java @@ -0,0 +1,27 @@ +package com.seibel.lod.core.api.external.coreImplementations.objects.events.abstractEvents; + +import com.seibel.lod.core.api.external.coreImplementations.objects.events.CoreDhApiRenderParam; +import com.seibel.lod.core.api.implementation.interfaces.events.ICoreDhApiEvent; + +/** + * @author James Seibel + * @version 2022-9-6 + */ +public abstract class CoreDhApiBeforeRenderEvent implements ICoreDhApiEvent +{ + + //==================// + // parameter object // + //==================// + + public static class CoreEventParam extends CoreDhApiRenderParam + { + public CoreEventParam(CoreDhApiRenderParam dhApiRenderParam) + { + super(dhApiRenderParam.mcProjectionMatrix, dhApiRenderParam.mcModelViewMatrix, + dhApiRenderParam.dhProjectionMatrix, dhApiRenderParam.dhModelViewMatrix, + dhApiRenderParam.partialTicks); + } + } + +} \ No newline at end of file diff --git a/core/src/main/java/com/seibel/lod/core/api/external/coreImplementations/objects/events/abstractEvents/CoreDhApiLevelLoadEvent.java b/core/src/main/java/com/seibel/lod/core/api/external/coreImplementations/objects/events/abstractEvents/CoreDhApiLevelLoadEvent.java new file mode 100644 index 000000000..4b4b4ce3c --- /dev/null +++ b/core/src/main/java/com/seibel/lod/core/api/external/coreImplementations/objects/events/abstractEvents/CoreDhApiLevelLoadEvent.java @@ -0,0 +1,29 @@ +package com.seibel.lod.core.api.external.coreImplementations.objects.events.abstractEvents; + +import com.seibel.lod.core.api.implementation.interfaces.events.ICoreDhApiEvent; +import com.seibel.lod.core.wrapperInterfaces.world.ILevelWrapper; + +/** + * @author James Seibel + * @version 2022-9-6 + */ +public abstract class CoreDhApiLevelLoadEvent implements ICoreDhApiEvent +{ + + //==================// + // parameter object // + //==================// + + public static class CoreEventParam + { + /** The newly loaded level. */ + public final ILevelWrapper levelWrapper; + + + public CoreEventParam(ILevelWrapper newLevelWrapper) + { + this.levelWrapper = newLevelWrapper; + } + } + +} \ No newline at end of file diff --git a/core/src/main/java/com/seibel/lod/core/api/external/coreImplementations/objects/events/abstractEvents/CoreDhApiLevelSaveEvent.java b/core/src/main/java/com/seibel/lod/core/api/external/coreImplementations/objects/events/abstractEvents/CoreDhApiLevelSaveEvent.java new file mode 100644 index 000000000..71a3e2e92 --- /dev/null +++ b/core/src/main/java/com/seibel/lod/core/api/external/coreImplementations/objects/events/abstractEvents/CoreDhApiLevelSaveEvent.java @@ -0,0 +1,29 @@ +package com.seibel.lod.core.api.external.coreImplementations.objects.events.abstractEvents; + +import com.seibel.lod.core.api.implementation.interfaces.events.ICoreDhApiEvent; +import com.seibel.lod.core.wrapperInterfaces.world.ILevelWrapper; + +/** + * @author James Seibel + * @version 2022-9-6 + */ +public abstract class CoreDhApiLevelSaveEvent implements ICoreDhApiEvent +{ + + //==================// + // parameter object // + //==================// + + public static class CoreEventParam + { + /** The newly loaded level. */ + public final ILevelWrapper levelWrapper; + + + public CoreEventParam(ILevelWrapper newLevelWrapper) + { + this.levelWrapper = newLevelWrapper; + } + } + +} \ No newline at end of file diff --git a/core/src/main/java/com/seibel/lod/core/api/external/coreImplementations/objects/events/abstractEvents/CoreDhApiLevelUnloadEvent.java b/core/src/main/java/com/seibel/lod/core/api/external/coreImplementations/objects/events/abstractEvents/CoreDhApiLevelUnloadEvent.java new file mode 100644 index 000000000..afec2f211 --- /dev/null +++ b/core/src/main/java/com/seibel/lod/core/api/external/coreImplementations/objects/events/abstractEvents/CoreDhApiLevelUnloadEvent.java @@ -0,0 +1,29 @@ +package com.seibel.lod.core.api.external.coreImplementations.objects.events.abstractEvents; + +import com.seibel.lod.core.api.implementation.interfaces.events.ICoreDhApiEvent; +import com.seibel.lod.core.wrapperInterfaces.world.ILevelWrapper; + +/** + * @author James Seibel + * @version 2022-9-6 + */ +public abstract class CoreDhApiLevelUnloadEvent implements ICoreDhApiEvent +{ + + //==================// + // parameter object // + //==================// + + public static class CoreEventParam + { + /** The recently unloaded level. */ + public final ILevelWrapper levelWrapper; + + + public CoreEventParam(ILevelWrapper newLevelWrapper) + { + this.levelWrapper = newLevelWrapper; + } + } + +} \ No newline at end of file diff --git a/core/src/main/java/com/seibel/lod/core/api/external/methods/events/abstractEvents/DhApiAfterDhInitEvent.java b/core/src/main/java/com/seibel/lod/core/api/external/methods/events/abstractEvents/DhApiAfterDhInitEvent.java deleted file mode 100644 index a4c726bc7..000000000 --- a/core/src/main/java/com/seibel/lod/core/api/external/methods/events/abstractEvents/DhApiAfterDhInitEvent.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.seibel.lod.core.api.external.methods.events.abstractEvents; - -import com.seibel.lod.core.api.implementation.interfaces.events.IDhApiEvent; - -/** - * @author James Seibel - * @version 2022-7-17 - */ -public abstract class DhApiAfterDhInitEvent implements IDhApiEvent -{ - /** Fired after Distant Horizons finishes its initial setup on Minecraft startup. */ - public abstract void afterDistantHorizonsInit(); - - - //=========================// - // internal DH API methods // - //=========================// - - @Override - public final boolean onEvent(Void ignoredParam) - { - afterDistantHorizonsInit(); - return false; - } - - @Override - public final boolean getCancelable() { return false; } -} \ No newline at end of file diff --git a/core/src/main/java/com/seibel/lod/core/api/external/methods/events/abstractEvents/DhApiAfterRenderEvent.java b/core/src/main/java/com/seibel/lod/core/api/external/methods/events/abstractEvents/DhApiAfterRenderEvent.java deleted file mode 100644 index e1890f6c4..000000000 --- a/core/src/main/java/com/seibel/lod/core/api/external/methods/events/abstractEvents/DhApiAfterRenderEvent.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.seibel.lod.core.api.external.methods.events.abstractEvents; - -import com.seibel.lod.core.api.external.coreImplementations.objects.events.CoreDhApiRenderParam; -import com.seibel.lod.core.api.implementation.interfaces.events.IDhApiEvent; - -/** - * @author James Seibel - * @version 2022-8-21 - */ -public abstract class DhApiAfterRenderEvent implements IDhApiEvent -{ - /** Fired after Distant Horizons finishes rendering fake chunks. */ - public abstract void afterRender(EventParam input); - - - //=========================// - // internal DH API methods // - //=========================// - - @Override - public final boolean onEvent(EventParam input) - { - afterRender(input); - return false; - } - - @Override - public final boolean getCancelable() { return false; } - - - //==================// - // parameter object // - //==================// - - public static class EventParam extends CoreDhApiRenderParam - { - public EventParam(CoreDhApiRenderParam dhApiRenderParam) - { - super(dhApiRenderParam.mcProjectionMatrix, dhApiRenderParam.mcModelViewMatrix, - dhApiRenderParam.dhProjectionMatrix, dhApiRenderParam.dhModelViewMatrix, - dhApiRenderParam.partialTicks); - } - } - -} \ No newline at end of file diff --git a/core/src/main/java/com/seibel/lod/core/api/external/methods/events/abstractEvents/DhApiBeforeDhInitEvent.java b/core/src/main/java/com/seibel/lod/core/api/external/methods/events/abstractEvents/DhApiBeforeDhInitEvent.java deleted file mode 100644 index c894f33b5..000000000 --- a/core/src/main/java/com/seibel/lod/core/api/external/methods/events/abstractEvents/DhApiBeforeDhInitEvent.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.seibel.lod.core.api.external.methods.events.abstractEvents; - -import com.seibel.lod.core.api.implementation.interfaces.events.IDhApiEvent; - -/** - * @author James Seibel - * @version 2022-7-17 - */ -public abstract class DhApiBeforeDhInitEvent implements IDhApiEvent -{ - /** Fired before Distant Horizons starts its initial setup on Minecraft startup. */ - public abstract void beforeDistantHorizonsInit(); - - - //=========================// - // internal DH API methods // - //=========================// - - @Override - public final boolean onEvent(Void ignoredParam) - { - beforeDistantHorizonsInit(); - return false; - } - - @Override - public final boolean getCancelable() { return false; } -} \ No newline at end of file diff --git a/core/src/main/java/com/seibel/lod/core/api/external/methods/events/abstractEvents/DhApiBeforeRenderEvent.java b/core/src/main/java/com/seibel/lod/core/api/external/methods/events/abstractEvents/DhApiBeforeRenderEvent.java deleted file mode 100644 index 2897d18df..000000000 --- a/core/src/main/java/com/seibel/lod/core/api/external/methods/events/abstractEvents/DhApiBeforeRenderEvent.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.seibel.lod.core.api.external.methods.events.abstractEvents; - -import com.seibel.lod.core.api.external.coreImplementations.objects.events.CoreDhApiRenderParam; -import com.seibel.lod.core.api.implementation.interfaces.events.IDhApiEvent; - -/** - * @author James Seibel - * @version 2022-8-21 - */ -public abstract class DhApiBeforeRenderEvent implements IDhApiEvent -{ - /** - * Fired before Distant Horizons renders fake chunks. - * - * @return whether the event should be canceled or not. - */ - public abstract boolean beforeRender(EventParam input); - - - //=========================// - // internal DH API methods // - //=========================// - - @Override - public final boolean onEvent(EventParam input) - { - return beforeRender(input); - } - - @Override - public final boolean getCancelable() { return true; } - - - //==================// - // parameter object // - //==================// - - public static class EventParam extends CoreDhApiRenderParam - { - public EventParam(CoreDhApiRenderParam dhApiRenderParam) - { - super(dhApiRenderParam.mcProjectionMatrix, dhApiRenderParam.mcModelViewMatrix, - dhApiRenderParam.dhProjectionMatrix, dhApiRenderParam.dhModelViewMatrix, - dhApiRenderParam.partialTicks); - } - } - -} \ No newline at end of file diff --git a/core/src/main/java/com/seibel/lod/core/api/external/methods/events/abstractEvents/DhApiLevelLoadEvent.java b/core/src/main/java/com/seibel/lod/core/api/external/methods/events/abstractEvents/DhApiLevelLoadEvent.java deleted file mode 100644 index a82174d7b..000000000 --- a/core/src/main/java/com/seibel/lod/core/api/external/methods/events/abstractEvents/DhApiLevelLoadEvent.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.seibel.lod.core.api.external.methods.events.abstractEvents; - -import com.seibel.lod.api.items.interfaces.world.IDhApiLevelWrapper; -import com.seibel.lod.core.api.implementation.interfaces.events.IDhApiEvent; - -/** - * @author James Seibel - * @version 2022-7-17 - */ -public abstract class DhApiLevelLoadEvent implements IDhApiEvent -{ - /** Fired after Distant Horizons loads a new level. */ - public abstract void levelLoad(EventParam input); - - - //=========================// - // internal DH API methods // - //=========================// - - @Override - public final boolean onEvent(EventParam input) - { - levelLoad(input); - return false; - } - - @Override - public final boolean getCancelable() { return false; } - - - //==================// - // parameter object // - //==================// - - public static class EventParam - { - /** The newly loaded level. */ - public final IDhApiLevelWrapper levelWrapper; - - - public EventParam(IDhApiLevelWrapper newLevelWrapper) - { - this.levelWrapper = newLevelWrapper; - } - } - -} \ No newline at end of file diff --git a/core/src/main/java/com/seibel/lod/core/api/external/methods/events/abstractEvents/DhApiLevelSaveEvent.java b/core/src/main/java/com/seibel/lod/core/api/external/methods/events/abstractEvents/DhApiLevelSaveEvent.java deleted file mode 100644 index 803b4d91a..000000000 --- a/core/src/main/java/com/seibel/lod/core/api/external/methods/events/abstractEvents/DhApiLevelSaveEvent.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.seibel.lod.core.api.external.methods.events.abstractEvents; - -import com.seibel.lod.api.items.interfaces.world.IDhApiLevelWrapper; -import com.seibel.lod.core.api.implementation.interfaces.events.IDhApiEvent; - -/** - * @author James Seibel - * @version 2022-8-23 - */ -public abstract class DhApiLevelSaveEvent implements IDhApiEvent -{ - /** Fired after Distant Horizons saves LOD data for the server. */ - public abstract void save(EventParam input); - - - //=========================// - // internal DH API methods // - //=========================// - - @Override - public final boolean onEvent(EventParam input) - { - save(input); - return false; - } - - @Override - public final boolean getCancelable() { return false; } - - - //==================// - // parameter object // - //==================// - - public static class EventParam - { - /** The newly loaded level. */ - public final IDhApiLevelWrapper levelWrapper; - - - public EventParam(IDhApiLevelWrapper newLevelWrapper) - { - this.levelWrapper = newLevelWrapper; - } - } - -} \ No newline at end of file diff --git a/core/src/main/java/com/seibel/lod/core/api/external/methods/events/abstractEvents/DhApiLevelUnloadEvent.java b/core/src/main/java/com/seibel/lod/core/api/external/methods/events/abstractEvents/DhApiLevelUnloadEvent.java deleted file mode 100644 index 992405ffe..000000000 --- a/core/src/main/java/com/seibel/lod/core/api/external/methods/events/abstractEvents/DhApiLevelUnloadEvent.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.seibel.lod.core.api.external.methods.events.abstractEvents; - -import com.seibel.lod.api.items.interfaces.world.IDhApiLevelWrapper; -import com.seibel.lod.core.api.implementation.interfaces.events.IDhApiEvent; - -/** - * @author James Seibel - * @version 2022-8-23 - */ -public abstract class DhApiLevelUnloadEvent implements IDhApiEvent -{ - /** Fired before Distant Horizons unloads a level. */ - public abstract void levelUnload(EventParam input); - - - //=========================// - // internal DH API methods // - //=========================// - - @Override - public final boolean onEvent(EventParam input) - { - levelUnload(input); - return false; - } - - @Override - public final boolean getCancelable() { return false; } - - - //==================// - // parameter object // - //==================// - - public static class EventParam - { - /** The recently unloaded level. */ - public final IDhApiLevelWrapper levelWrapper; - - - public EventParam(IDhApiLevelWrapper newLevelWrapper) - { - this.levelWrapper = newLevelWrapper; - } - } - -} \ No newline at end of file diff --git a/core/src/main/java/com/seibel/lod/core/api/implementation/interfaces/events/ICoreDhApiEvent.java b/core/src/main/java/com/seibel/lod/core/api/implementation/interfaces/events/ICoreDhApiEvent.java new file mode 100644 index 000000000..7f3ca4b4d --- /dev/null +++ b/core/src/main/java/com/seibel/lod/core/api/implementation/interfaces/events/ICoreDhApiEvent.java @@ -0,0 +1,50 @@ +package com.seibel.lod.core.api.implementation.interfaces.events; + +import com.seibel.lod.core.handlers.dependencyInjection.IBindable; + +/** + * A combination of all interfaces required by all + * DH Api events. + * + * @param This is the datatype that will be passed in from Core + * when the event is fired. + * + * @author James Seibel + * @version 2022-9-6 + */ +public interface ICoreDhApiEvent extends IBindable +{ + //==========// + // internal // + //==========// + + /** Returns true if the event can be canceled. */ + boolean getCancelable(); + + /** + * Called internally by Distant Horizons when the event happens. + * This method shouldn't directly be overridden and + * should call a more specific method instead. + * + * @param input the parameter object passed in from the event source. Can be null. + * @return whether the event should be canceled or not. + * A canceled event will still fire the other event handlers that are queued. + */ + boolean fireEvent(CoreInputType input); + + + + //==========// + // external // + //==========// + + /** + * Returns if the event should be automatically unbound + * after firing.
+ * Can be useful for one time setup events or waiting for a specific game state.

+ * + * Defaults to False (the event will not be removed after firing). + */ + boolean removeAfterFiring(); + +} diff --git a/core/src/main/java/com/seibel/lod/core/api/implementation/interfaces/events/IDhApiEvent.java b/core/src/main/java/com/seibel/lod/core/api/implementation/interfaces/events/IDhApiEvent.java deleted file mode 100644 index dfac90aaa..000000000 --- a/core/src/main/java/com/seibel/lod/core/api/implementation/interfaces/events/IDhApiEvent.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.seibel.lod.core.api.implementation.interfaces.events; - -import com.seibel.lod.core.handlers.dependencyInjection.IBindable; - -/** - * A combination of all interfaces required by - * DH Api events. - * - * @param This is the datatype that should be passed into the - * event handler's method. - * - * @author James Seibel - * @version 2022-7-16 - */ -public interface IDhApiEvent extends IDhApiEventExternal, IDhApiEventInternal, IBindable -{ - // Don't add any methods here. - // Add them to: IDhApiEventExternal or IDhApiEventInternal - // (depending on if they should be available to - // implementing developers or only DH devs) -} diff --git a/core/src/main/java/com/seibel/lod/core/api/implementation/interfaces/events/IDhApiEventExternal.java b/core/src/main/java/com/seibel/lod/core/api/implementation/interfaces/events/IDhApiEventExternal.java deleted file mode 100644 index db7e365ac..000000000 --- a/core/src/main/java/com/seibel/lod/core/api/implementation/interfaces/events/IDhApiEventExternal.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.seibel.lod.core.api.implementation.interfaces.events; - -/** - * Contains any methods that can be implemented by - * mod developers that wish to register events with the DH Api.

- * - * All Api events should implement this. - * - * @param This is the datatype that should be passed into the - * event handler's method. - * - * @author James Seibel - * @version 2022-7-16 - */ -public interface IDhApiEventExternal extends IDhApiEventInternal -{ - /** - * Returns if the event should be automatically unbound - * after firing.
- * Can be useful for one time setup events or waiting for a specific game state.

- * - * Defaults to False (the event will not be removed after firing). - */ - default boolean removeAfterFiring() { return false; }; - -} diff --git a/core/src/main/java/com/seibel/lod/core/api/implementation/interfaces/events/IDhApiEventInternal.java b/core/src/main/java/com/seibel/lod/core/api/implementation/interfaces/events/IDhApiEventInternal.java deleted file mode 100644 index ec75191cb..000000000 --- a/core/src/main/java/com/seibel/lod/core/api/implementation/interfaces/events/IDhApiEventInternal.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.seibel.lod.core.api.implementation.interfaces.events; - -/** - * Contains methods that should only be used internally - * by Distant Horizons and should all be locked with - * the "final" keyword.
- * (IE: whether an event is cancelable or not should only be defined by the DH API)

- * - * All Api events should implement this. - * - * @param This is the datatype that should be passed into the - * event handler's method. - * - * @author James Seibel - * @version 2022-7-16 - */ -public interface IDhApiEventInternal -{ - /** Returns true if the event can be canceled. */ - boolean getCancelable(); - - /** - * Called internally by Distant Horizons when the event happens. - * This method shouldn't directly be overridden and instead - * should point to the more specific event method. - * - * @param input the parameter object passed in from the event source. Can be null. - * @return whether the event should be canceled or not. - * A canceled event will still fire the other event handlers that are queued. - */ - boolean onEvent(InputType input); - -} diff --git a/core/src/main/java/com/seibel/lod/core/handlers/dependencyInjection/DhApiEventInjector.java b/core/src/main/java/com/seibel/lod/core/handlers/dependencyInjection/DhApiEventInjector.java index 73a92ac95..9c818eb6e 100644 --- a/core/src/main/java/com/seibel/lod/core/handlers/dependencyInjection/DhApiEventInjector.java +++ b/core/src/main/java/com/seibel/lod/core/handlers/dependencyInjection/DhApiEventInjector.java @@ -19,7 +19,7 @@ package com.seibel.lod.core.handlers.dependencyInjection; -import com.seibel.lod.core.api.implementation.interfaces.events.IDhApiEvent; +import com.seibel.lod.core.api.implementation.interfaces.events.ICoreDhApiEvent; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -36,7 +36,7 @@ import java.util.ArrayList; * @author Leetom * @version 2022-8-15 */ -public class DhApiEventInjector extends DependencyInjector // Note to self: Don't try adding a generic type to IDhApiEvent, the consturctor won't accept it +public class DhApiEventInjector extends DependencyInjector // Note to self: Don't try adding a generic type to IDhApiEvent, the consturctor won't accept it { private static final Logger LOGGER = LogManager.getLogger(DhApiEventInjector.class.getSimpleName()); @@ -46,7 +46,7 @@ public class DhApiEventInjector extends DependencyInjector // Note public DhApiEventInjector() { - super(IDhApiEvent.class, true); + super(ICoreDhApiEvent.class, true); } @@ -56,7 +56,7 @@ public class DhApiEventInjector extends DependencyInjector // Note * @throws IllegalArgumentException if the implementation object doesn't implement the interface * @return true if the handler was unbound, false if the handler wasn't bound. */ - public boolean unbind(Class dependencyInterface, Class dependencyClassToRemove) throws IllegalArgumentException + public boolean unbind(Class dependencyInterface, Class dependencyClassToRemove) throws IllegalArgumentException { // make sure the given dependency implements the necessary interfaces boolean implementsInterface = checkIfClassImplements(dependencyClassToRemove, dependencyInterface) @@ -77,7 +77,7 @@ public class DhApiEventInjector extends DependencyInjector // Note // actually remove the dependency if (this.dependencies.containsKey(dependencyInterface)) { - ArrayList dependencyList = this.dependencies.get(dependencyInterface); + ArrayList dependencyList = this.dependencies.get(dependencyInterface); int indexToRemove = -1; for(int i = 0; i < dependencyList.size(); i++) { @@ -107,12 +107,12 @@ public class DhApiEventInjector extends DependencyInjector // Note * @return if any of the events returned that this event should be canceled. * @param the parameter type taken by the event handlers. */ - public > boolean fireAllEvents(Class dependencyInterface, T eventParameterObject) + public > boolean fireAllEvents(Class dependencyInterface, T eventParameterObject) { boolean cancelEvent = false; ArrayList eventList = this.getAll(dependencyInterface); - for (IDhApiEvent event : eventList) + for (ICoreDhApiEvent event : eventList) { if (event != null) { @@ -120,7 +120,7 @@ public class DhApiEventInjector extends DependencyInjector // Note { // fire each event and record if any of them // request to cancel the event. - cancelEvent |= event.onEvent(eventParameterObject); + cancelEvent |= event.fireEvent(eventParameterObject); } catch (Exception e) { diff --git a/core/src/test/java/testItems/eventInjection/abstractObjects/DhApiTestEvent.java b/core/src/test/java/testItems/eventInjection/abstractObjects/DhApiTestEvent.java index 26967726f..c8247173b 100644 --- a/core/src/test/java/testItems/eventInjection/abstractObjects/DhApiTestEvent.java +++ b/core/src/test/java/testItems/eventInjection/abstractObjects/DhApiTestEvent.java @@ -1,6 +1,6 @@ package testItems.eventInjection.abstractObjects; -import com.seibel.lod.core.api.implementation.interfaces.events.IDhApiEvent; +import com.seibel.lod.core.api.implementation.interfaces.events.ICoreDhApiEvent; /** * A dummy event implementation used for unit testing. @@ -8,7 +8,7 @@ import com.seibel.lod.core.api.implementation.interfaces.events.IDhApiEvent; * @author James Seibel * @version 2022-7-16 */ -public abstract class DhApiTestEvent implements IDhApiEvent +public abstract class DhApiTestEvent implements ICoreDhApiEvent { /** * Test event. @@ -30,7 +30,7 @@ public abstract class DhApiTestEvent implements IDhApiEvent //=========================// @Override - public final boolean onEvent(Boolean input) + public final boolean fireEvent(Boolean input) { return test(input); }