From ba701eb014d8cd8f90c44b1d13591f46bd32fba1 Mon Sep 17 00:00:00 2001 From: James Seibel Date: Sat, 10 Sep 2022 17:10:48 -0500 Subject: [PATCH] Fix the level API events --- .../objects/wrappers/DhApiLevelWrapper.java | 28 +++++++++---------- .../abstractEvents/DhApiLevelLoadEvent.java | 12 ++++---- .../abstractEvents/DhApiLevelSaveEvent.java | 15 ++++++---- .../abstractEvents/DhApiLevelUnloadEvent.java | 12 ++++---- .../lod/core/api/internal/a7/ClientApi.java | 18 ++++++------ .../world/ICoreDhApiLevelWrapper.java | 3 +- .../world/ILevelWrapper.java | 9 ++---- 7 files changed, 51 insertions(+), 46 deletions(-) diff --git a/api/src/main/java/com/seibel/lod/api/items/objects/wrappers/DhApiLevelWrapper.java b/api/src/main/java/com/seibel/lod/api/items/objects/wrappers/DhApiLevelWrapper.java index 8e929d206..901f00abd 100644 --- a/api/src/main/java/com/seibel/lod/api/items/objects/wrappers/DhApiLevelWrapper.java +++ b/api/src/main/java/com/seibel/lod/api/items/objects/wrappers/DhApiLevelWrapper.java @@ -20,10 +20,8 @@ package com.seibel.lod.api.items.objects.wrappers; import com.seibel.lod.api.items.enums.worldGeneration.EDhApiLevelType; -import com.seibel.lod.api.items.interfaces.IDhApiUnsafeWrapper; import com.seibel.lod.api.items.interfaces.world.IDhApiDimensionTypeWrapper; import com.seibel.lod.api.items.interfaces.world.IDhApiLevelWrapper; -import com.seibel.lod.core.api.external.coreImplementations.interfaces.wrappers.world.ICoreDhApiLevelWrapper; import com.seibel.lod.core.wrapperInterfaces.world.IClientLevelWrapper; import com.seibel.lod.core.wrapperInterfaces.world.IDimensionTypeWrapper; import com.seibel.lod.core.wrapperInterfaces.world.ILevelWrapper; @@ -33,32 +31,32 @@ import com.seibel.lod.core.wrapperInterfaces.world.IServerLevelWrapper; * Can be either a Server or Client level. * * @author James Seibel - * @version 2022-9-8 + * @version 2022-9-10 */ public class DhApiLevelWrapper implements IDhApiLevelWrapper { - private final ILevelWrapper levelWrapper; - private final IDimensionTypeWrapper dimensionTypeWrapper; + private final ILevelWrapper coreLevelWrapper; + private final IDimensionTypeWrapper coreDimensionTypeWrapper; public DhApiLevelWrapper(ILevelWrapper newLevelWrapper) { - this.levelWrapper = newLevelWrapper; - this.dimensionTypeWrapper = this.levelWrapper.getDimensionType(); + this.coreLevelWrapper = newLevelWrapper; + this.coreDimensionTypeWrapper = this.coreLevelWrapper.getDimensionType(); } @Override - public IDhApiDimensionTypeWrapper getDimensionType() { return new DhApiDimensionTypeWrapper(this.dimensionTypeWrapper); } + public IDhApiDimensionTypeWrapper getDimensionType() { return new DhApiDimensionTypeWrapper(this.coreDimensionTypeWrapper); } @Override public EDhApiLevelType getLevelType() { - if (this.levelWrapper.getClass().isAssignableFrom(IClientLevelWrapper.class)) + if (this.coreLevelWrapper.getClass().isAssignableFrom(IClientLevelWrapper.class)) { return EDhApiLevelType.CLIENT_LEVEL; } - else if (this.levelWrapper.getClass().isAssignableFrom(IServerLevelWrapper.class)) + else if (this.coreLevelWrapper.getClass().isAssignableFrom(IServerLevelWrapper.class)) { return EDhApiLevelType.CLIENT_LEVEL; } @@ -70,19 +68,19 @@ public class DhApiLevelWrapper implements IDhApiLevelWrapper } @Override - public boolean hasCeiling() { return this.levelWrapper.hasCeiling(); } + public boolean hasCeiling() { return this.coreLevelWrapper.hasCeiling(); } @Override - public boolean hasSkyLight() { return this.levelWrapper.hasSkyLight(); } + public boolean hasSkyLight() { return this.coreLevelWrapper.hasSkyLight(); } @Override - public int getHeight() { return this.levelWrapper.getHeight(); } + public int getHeight() { return this.coreLevelWrapper.getHeight(); } @Override - public int getMinHeight() { return this.levelWrapper.getMinHeight(); } + public int getMinHeight() { return this.coreLevelWrapper.getMinHeight(); } @Override - public Object getWrappedMcObject_UNSAFE() { return this.levelWrapper.unwrapLevel(); } + public Object getWrappedMcObject_UNSAFE() { return this.coreLevelWrapper.unwrapLevel(); } } 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 index 6f4de7d78..ab678bb4a 100644 --- 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 @@ -1,11 +1,14 @@ package com.seibel.lod.api.methods.events.abstractEvents; +import com.seibel.lod.api.items.interfaces.world.IDhApiLevelWrapper; +import com.seibel.lod.api.items.objects.wrappers.DhApiLevelWrapper; import com.seibel.lod.api.methods.events.interfaces.IDhApiEvent; import com.seibel.lod.core.api.external.coreImplementations.objects.events.abstractEvents.CoreDhApiLevelLoadEvent; +import com.seibel.lod.core.wrapperInterfaces.world.ILevelWrapper; /** * @author James Seibel - * @version 2022-9-6 + * @version 2022-9-10 */ public abstract class DhApiLevelLoadEvent extends CoreDhApiLevelLoadEvent @@ -22,7 +25,7 @@ public abstract class DhApiLevelLoadEvent @Override public final boolean fireEvent(CoreEventParam input) { - onLevelLoad(new EventParam()); + onLevelLoad(new EventParam(input.levelWrapper)); return false; } @@ -37,11 +40,10 @@ public abstract class DhApiLevelLoadEvent public static class EventParam { /** The newly loaded level. */ - //public final IDhApiLevelWrapper levelWrapper; + public final IDhApiLevelWrapper levelWrapper; - // TODO - //public EventParam(ILevelWrapper newLevelWrapper) { this.levelWrapper = newLevelWrapper; } + public EventParam(ILevelWrapper newLevelWrapper) { this.levelWrapper = new DhApiLevelWrapper(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 index d88467b42..f241a62c2 100644 --- 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 @@ -1,11 +1,14 @@ package com.seibel.lod.api.methods.events.abstractEvents; +import com.seibel.lod.api.items.interfaces.world.IDhApiLevelWrapper; +import com.seibel.lod.api.items.objects.wrappers.DhApiLevelWrapper; import com.seibel.lod.api.methods.events.interfaces.IDhApiEvent; import com.seibel.lod.core.api.external.coreImplementations.objects.events.abstractEvents.CoreDhApiLevelSaveEvent; +import com.seibel.lod.core.wrapperInterfaces.world.ILevelWrapper; /** * @author James Seibel - * @version 2022-9-6 + * @version 2022-9-10 */ public abstract class DhApiLevelSaveEvent extends CoreDhApiLevelSaveEvent @@ -22,7 +25,7 @@ public abstract class DhApiLevelSaveEvent @Override public final boolean fireEvent(CoreDhApiLevelSaveEvent.CoreEventParam input) { - onLevelSave(new EventParam()); + onLevelSave(new EventParam(input.levelWrapper)); return false; } @@ -36,11 +39,11 @@ public abstract class DhApiLevelSaveEvent public static class EventParam { - /** The newly loaded level. */ - //public final IDhApiLevelWrapper levelWrapper; + /** The saved level. */ + public final IDhApiLevelWrapper levelWrapper; - // TODO - //public EventParam(IDhApiLevelWrapper newLevelWrapper) { this.levelWrapper = newLevelWrapper; } + + public EventParam(ILevelWrapper newLevelWrapper) { this.levelWrapper = new DhApiLevelWrapper(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 index 62e9f90bd..1e2673519 100644 --- 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 @@ -1,11 +1,14 @@ package com.seibel.lod.api.methods.events.abstractEvents; +import com.seibel.lod.api.items.interfaces.world.IDhApiLevelWrapper; +import com.seibel.lod.api.items.objects.wrappers.DhApiLevelWrapper; import com.seibel.lod.api.methods.events.interfaces.IDhApiEvent; import com.seibel.lod.core.api.external.coreImplementations.objects.events.abstractEvents.CoreDhApiLevelUnloadEvent; +import com.seibel.lod.core.wrapperInterfaces.world.ILevelWrapper; /** * @author James Seibel - * @version 2022-9-6 + * @version 2022-9-10 */ public abstract class DhApiLevelUnloadEvent extends CoreDhApiLevelUnloadEvent @@ -22,7 +25,7 @@ public abstract class DhApiLevelUnloadEvent @Override public final boolean fireEvent(CoreDhApiLevelUnloadEvent.CoreEventParam input) { - onLevelUnload(new EventParam()); + onLevelUnload(new EventParam(input.levelWrapper)); return false; } @@ -37,11 +40,10 @@ public abstract class DhApiLevelUnloadEvent public static class EventParam { /** The recently unloaded level. */ -// public final IDhApiLevelWrapper levelWrapper; + public final IDhApiLevelWrapper levelWrapper; - // TODO -// public EventParam(IDhApiLevelWrapper newLevelWrapper) { this.levelWrapper = newLevelWrapper; } + public EventParam(ILevelWrapper newLevelWrapper) { this.levelWrapper = new DhApiLevelWrapper(newLevelWrapper); } } } \ No newline at end of file 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 14f3506c3..b247f44f7 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,11 +21,14 @@ 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.coreImplementations.objects.events.abstractEvents.*; import com.seibel.lod.core.api.external.coreImplementations.objects.events.sharedParameterObjects.CoreDhApiRenderParam; +import com.seibel.lod.core.api.external.coreImplementations.objects.wrappers.CoreDhApiLevelWrapper; import com.seibel.lod.core.config.Config; import com.seibel.lod.core.ModInfo; import com.seibel.lod.core.enums.rendering.EDebugMode; import com.seibel.lod.core.enums.rendering.ERendererMode; +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.ConfigBasedSpamLogger; @@ -52,7 +55,7 @@ import java.util.concurrent.TimeUnit; * Specifically for the client. * * @author James Seibel - * @version 2022-8-23 + * @version 2022-9-10 */ public class ClientApi { @@ -145,7 +148,7 @@ public class ClientApi //TODO: Implement // TODO: potentially add a list of chunks that were updated during the save -// DhApiEventInjector.INSTANCE.fireAllEvents(DhApiLevelSaveEvent.class, new DhApiLevelSaveEvent.EventParam(new DhApiLevelWrapper(level))); + DhApiEventInjector.INSTANCE.fireAllEvents(CoreDhApiLevelSaveEvent.class, new CoreDhApiLevelSaveEvent.CoreEventParam(level)); } } @@ -156,7 +159,7 @@ public class ClientApi if (SharedApi.currentWorld != null) { SharedApi.currentWorld.unloadLevel(level); -// DhApiEventInjector.INSTANCE.fireAllEvents(DhApiLevelUnloadEvent.class, new DhApiLevelUnloadEvent.EventParam(new DhApiLevelWrapper(level))); + DhApiEventInjector.INSTANCE.fireAllEvents(CoreDhApiLevelUnloadEvent.class, new CoreDhApiLevelUnloadEvent.CoreEventParam(level)); } } @@ -167,7 +170,7 @@ public class ClientApi if (SharedApi.currentWorld != null) { SharedApi.currentWorld.getOrLoadLevel(level); -// DhApiEventInjector.INSTANCE.fireAllEvents(DhApiLevelLoadEvent.class, new DhApiLevelLoadEvent.EventParam(new DhApiLevelWrapper(level))); + DhApiEventInjector.INSTANCE.fireAllEvents(CoreDhApiLevelLoadEvent.class, new CoreDhApiLevelLoadEvent.CoreEventParam(level)); } } @@ -260,12 +263,11 @@ public class ClientApi RenderUtil.createLodProjectionMatrix(mcProjectionMatrix, partialTicks), RenderUtil.createLodModelViewMatrix(mcModelViewMatrix), partialTicks); -// boolean renderingCanceled = DhApiEventInjector.INSTANCE.fireAllEvents(DhApiBeforeRenderEvent.class, new DhApiBeforeRenderEvent.EventParam(renderEventParam)); - - if (!rendererDisabledBecauseOfExceptions) // && !renderingCanceled) + boolean renderingCanceled = DhApiEventInjector.INSTANCE.fireAllEvents(CoreDhApiBeforeRenderEvent.class, new CoreDhApiBeforeRenderEvent.CoreEventParam(renderEventParam)); + if (!rendererDisabledBecauseOfExceptions && !renderingCanceled) { level.render(mcModelViewMatrix, mcProjectionMatrix, partialTicks, profiler); -// DhApiEventInjector.INSTANCE.fireAllEvents(DhApiAfterRenderEvent.class, new DhApiAfterRenderEvent.EventParam(renderEventParam)); + DhApiEventInjector.INSTANCE.fireAllEvents(CoreDhApiAfterRenderEvent.class, new CoreDhApiAfterRenderEvent.CoreEventParam(renderEventParam)); } } else if (Config.Client.Advanced.Debugging.rendererMode.get() == ERendererMode.DEBUG) diff --git a/core/src/main/java/com/seibel/lod/core/api/external/coreImplementations/interfaces/wrappers/world/ICoreDhApiLevelWrapper.java b/core/src/main/java/com/seibel/lod/core/api/external/coreImplementations/interfaces/wrappers/world/ICoreDhApiLevelWrapper.java index 122e70124..edc261399 100644 --- a/core/src/main/java/com/seibel/lod/core/api/external/coreImplementations/interfaces/wrappers/world/ICoreDhApiLevelWrapper.java +++ b/core/src/main/java/com/seibel/lod/core/api/external/coreImplementations/interfaces/wrappers/world/ICoreDhApiLevelWrapper.java @@ -20,12 +20,13 @@ package com.seibel.lod.core.api.external.coreImplementations.interfaces.wrappers.world; import com.seibel.lod.core.api.external.coreImplementations.interfaces.wrappers.ICoreDhApiUnsafeWrapper; +import com.seibel.lod.core.wrapperInterfaces.world.ILevelWrapper; /** * Can be either a Server or Client level. * * @author James Seibel - * @version 2022-9-7 + * @version 2022-9-10 */ public interface ICoreDhApiLevelWrapper extends ICoreDhApiUnsafeWrapper { diff --git a/core/src/main/java/com/seibel/lod/core/wrapperInterfaces/world/ILevelWrapper.java b/core/src/main/java/com/seibel/lod/core/wrapperInterfaces/world/ILevelWrapper.java index c0131835f..028cb74d6 100644 --- a/core/src/main/java/com/seibel/lod/core/wrapperInterfaces/world/ILevelWrapper.java +++ b/core/src/main/java/com/seibel/lod/core/wrapperInterfaces/world/ILevelWrapper.java @@ -32,7 +32,7 @@ import com.seibel.lod.core.wrapperInterfaces.chunk.IChunkWrapper; * Can be either a Server world or a Client world. * * @author James Seibel - * @version 3-5-2022 + * @version 2022-9-10 */ public interface ILevelWrapper extends IBindable { @@ -48,12 +48,9 @@ public interface ILevelWrapper extends IBindable int getHeight(); - default short getMinHeight() - { - return 0; - } + default short getMinHeight() { return 0; } - default IChunkWrapper tryGetChunk(DHChunkPos pos) {return null;} + default IChunkWrapper tryGetChunk(DHChunkPos pos) { return null; } boolean hasChunkLoaded(int chunkX, int chunkZ);