Fix the level API events

This commit is contained in:
James Seibel
2022-09-10 17:10:48 -05:00
parent 0a70ec9986
commit ba701eb014
7 changed files with 51 additions and 46 deletions
@@ -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(); }
}
@@ -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); }
}
}
@@ -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); }
}
}
@@ -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); }
}
}
@@ -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)
@@ -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
{
@@ -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);