skipRender) {
+ this.instanceFactory = instanceFactory;
+ this.skipRender = skipRender;
+ }
+
+ @Override
+ public EntityInstance super T> createInstance(MaterialManager materialManager, T entity) {
+ return instanceFactory.apply(materialManager, entity);
+ }
+
+ @Override
+ public boolean shouldSkipRender(T entity) {
+ return skipRender.test(entity);
+ }
+}
diff --git a/src/main/java/com/jozufozu/flywheel/backend/instancing/instancing/InstancingEngine.java b/src/main/java/com/jozufozu/flywheel/backend/instancing/instancing/InstancingEngine.java
index 6d91b3563..5dc89870c 100644
--- a/src/main/java/com/jozufozu/flywheel/backend/instancing/instancing/InstancingEngine.java
+++ b/src/main/java/com/jozufozu/flywheel/backend/instancing/instancing/InstancingEngine.java
@@ -77,6 +77,10 @@ public class InstancingEngine implements Engine {
*/
@Override
public void render(TaskEngine taskEngine, RenderLayerEvent event) {
+ int ebo = GlBufferType.ELEMENT_ARRAY_BUFFER.getBoundBuffer();
+ int vbo = GlBufferType.ARRAY_BUFFER.getBoundBuffer();
+ int vao = GlVertexArray.getBoundVertexArray();
+
double camX;
double camY;
double camZ;
@@ -97,9 +101,9 @@ public class InstancingEngine
implements Engine {
getGroupsToRender(event.getLayer()).forEach(group -> group.render(viewProjection, camX, camY, camZ, event.getLayer()));
- GlBufferType.ELEMENT_ARRAY_BUFFER.unbind();
- GlBufferType.ARRAY_BUFFER.unbind();
- GlVertexArray.unbind();
+ GlBufferType.ELEMENT_ARRAY_BUFFER.bind(ebo);
+ GlBufferType.ARRAY_BUFFER.bind(vbo);
+ GlVertexArray.bind(vao);
}
private Stream> getGroupsToRender(@Nullable RenderLayer layer) {
diff --git a/src/main/java/com/jozufozu/flywheel/backend/instancing/tile/ITileInstanceFactory.java b/src/main/java/com/jozufozu/flywheel/backend/instancing/tile/ITileInstanceFactory.java
deleted file mode 100644
index c1bdaa74b..000000000
--- a/src/main/java/com/jozufozu/flywheel/backend/instancing/tile/ITileInstanceFactory.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package com.jozufozu.flywheel.backend.instancing.tile;
-
-import com.jozufozu.flywheel.api.MaterialManager;
-
-import net.minecraft.world.level.block.entity.BlockEntity;
-
-@FunctionalInterface
-public interface ITileInstanceFactory {
- TileEntityInstance super T> create(MaterialManager manager, T te);
-}
diff --git a/src/main/java/com/jozufozu/flywheel/backend/model/BufferBuilderExtension.java b/src/main/java/com/jozufozu/flywheel/backend/model/BufferBuilderExtension.java
new file mode 100644
index 000000000..87d840792
--- /dev/null
+++ b/src/main/java/com/jozufozu/flywheel/backend/model/BufferBuilderExtension.java
@@ -0,0 +1,27 @@
+package com.jozufozu.flywheel.backend.model;
+
+import java.nio.ByteBuffer;
+
+import com.mojang.blaze3d.vertex.BufferBuilder;
+import com.mojang.blaze3d.vertex.VertexFormat;
+
+/**
+ * Duck interface used on {@link BufferBuilder} to provide lower level access to the backing memory.
+ *
+ * @see com.jozufozu.flywheel.mixin.BufferBuilderMixin
+ */
+public interface BufferBuilderExtension {
+
+ /**
+ * Frees the internal ByteBuffer, if it exists.
+ */
+ void flywheel$freeBuffer();
+
+ /**
+ * Prepares the BufferBuilder for drawing the contents of the given buffer.
+ * @param buffer The buffer to draw.
+ * @param format The format of the buffer.
+ * @param vertexCount The number of vertices in the buffer.
+ */
+ void flywheel$injectForRender(ByteBuffer buffer, VertexFormat format, int vertexCount);
+}
diff --git a/src/main/java/com/jozufozu/flywheel/backend/model/BufferBuilderHack.java b/src/main/java/com/jozufozu/flywheel/backend/model/BufferBuilderHack.java
deleted file mode 100644
index 2fc98cf21..000000000
--- a/src/main/java/com/jozufozu/flywheel/backend/model/BufferBuilderHack.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.jozufozu.flywheel.backend.model;
-
-import java.nio.ByteBuffer;
-
-import com.mojang.blaze3d.vertex.BufferBuilder;
-import com.mojang.blaze3d.vertex.VertexFormat;
-
-/**
- * Duck interface used on {@link BufferBuilder} to provide lower level access to the backing memory.
- */
-public interface BufferBuilderHack {
-
- void flywheel$freeBuffer();
-
- void flywheel$hackBegin(ByteBuffer buffer, VertexFormat format, int vertexCount);
-}
diff --git a/src/main/java/com/jozufozu/flywheel/backend/model/DirectVertexConsumer.java b/src/main/java/com/jozufozu/flywheel/backend/model/DirectVertexConsumer.java
index 8446fbfcc..3461e65e1 100644
--- a/src/main/java/com/jozufozu/flywheel/backend/model/DirectVertexConsumer.java
+++ b/src/main/java/com/jozufozu/flywheel/backend/model/DirectVertexConsumer.java
@@ -13,7 +13,7 @@ import com.mojang.blaze3d.vertex.VertexFormatElement;
/**
* An unsafe vertex consumer allowing for unchecked writes into a ByteBuffer.
*
- * @see BufferBuilderHack
+ * @see BufferBuilderExtension
*/
public class DirectVertexConsumer implements VertexConsumer {
public final VertexFormat format;
diff --git a/src/main/java/com/jozufozu/flywheel/backend/source/SourceFile.java b/src/main/java/com/jozufozu/flywheel/backend/source/SourceFile.java
index 65ba34a3e..5692b5273 100644
--- a/src/main/java/com/jozufozu/flywheel/backend/source/SourceFile.java
+++ b/src/main/java/com/jozufozu/flywheel/backend/source/SourceFile.java
@@ -228,7 +228,7 @@ public class SourceFile {
}
/**
- * Scan the source for #use "..."
directives.
+ * Scan the source for {@code #use "..."} directives.
* Records the contents of the directive into an {@link Import} object, and marks the directive for elision.
* @param elisions
*/
diff --git a/src/main/java/com/jozufozu/flywheel/config/BooleanConfig.java b/src/main/java/com/jozufozu/flywheel/config/BooleanConfig.java
index 78f611990..ae33c75f3 100644
--- a/src/main/java/com/jozufozu/flywheel/config/BooleanConfig.java
+++ b/src/main/java/com/jozufozu/flywheel/config/BooleanConfig.java
@@ -3,9 +3,6 @@ package com.jozufozu.flywheel.config;
import java.util.function.Consumer;
import java.util.function.Supplier;
-import com.jozufozu.flywheel.backend.Backend;
-import com.jozufozu.flywheel.backend.OptifineHandler;
-
import net.minecraft.ChatFormatting;
import net.minecraft.client.Minecraft;
import net.minecraft.client.player.LocalPlayer;
diff --git a/src/main/java/com/jozufozu/flywheel/core/LastActiveCamera.java b/src/main/java/com/jozufozu/flywheel/core/LastActiveCamera.java
new file mode 100644
index 000000000..60e36f463
--- /dev/null
+++ b/src/main/java/com/jozufozu/flywheel/core/LastActiveCamera.java
@@ -0,0 +1,21 @@
+package com.jozufozu.flywheel.core;
+
+import net.minecraft.client.Camera;
+
+/**
+ * A class tracking which object last had {@link Camera#setup} called on it.
+ *
+ * @see com.jozufozu.flywheel.mixin.CameraMixin
+ */
+public class LastActiveCamera {
+
+ private static Camera camera;
+
+ public static void _setActiveCamera(Camera camera) {
+ LastActiveCamera.camera = camera;
+ }
+
+ public static Camera getActiveCamera() {
+ return camera;
+ }
+}
diff --git a/src/main/java/com/jozufozu/flywheel/core/crumbling/CrumblingInstanceManager.java b/src/main/java/com/jozufozu/flywheel/core/crumbling/CrumblingInstanceManager.java
index 30e427f6b..edfcd2c0c 100644
--- a/src/main/java/com/jozufozu/flywheel/core/crumbling/CrumblingInstanceManager.java
+++ b/src/main/java/com/jozufozu/flywheel/core/crumbling/CrumblingInstanceManager.java
@@ -1,11 +1,11 @@
package com.jozufozu.flywheel.core.crumbling;
import com.jozufozu.flywheel.api.MaterialManager;
-import com.jozufozu.flywheel.backend.instancing.tile.TileInstanceManager;
+import com.jozufozu.flywheel.backend.instancing.blockentity.BlockEntityInstanceManager;
import net.minecraft.core.BlockPos;
-public class CrumblingInstanceManager extends TileInstanceManager {
+public class CrumblingInstanceManager extends BlockEntityInstanceManager {
public CrumblingInstanceManager(MaterialManager materialManager) {
super(materialManager);
diff --git a/src/main/java/com/jozufozu/flywheel/core/crumbling/CrumblingRenderer.java b/src/main/java/com/jozufozu/flywheel/core/crumbling/CrumblingRenderer.java
index 056790864..e9aca9ff3 100644
--- a/src/main/java/com/jozufozu/flywheel/core/crumbling/CrumblingRenderer.java
+++ b/src/main/java/com/jozufozu/flywheel/core/crumbling/CrumblingRenderer.java
@@ -6,8 +6,8 @@ import java.util.SortedSet;
import com.jozufozu.flywheel.backend.Backend;
import com.jozufozu.flywheel.backend.gl.GlTextureUnit;
-import com.jozufozu.flywheel.backend.instancing.SerialTaskEngine;
import com.jozufozu.flywheel.backend.instancing.InstanceManager;
+import com.jozufozu.flywheel.backend.instancing.SerialTaskEngine;
import com.jozufozu.flywheel.backend.instancing.instancing.InstancingEngine;
import com.jozufozu.flywheel.core.Contexts;
import com.jozufozu.flywheel.event.ReloadRenderersEvent;
@@ -36,7 +36,7 @@ import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;
/**
- * Responsible for rendering the block breaking overlay for instanced tiles.
+ * Responsible for rendering the block breaking overlay for instanced block entities.
*/
@OnlyIn(Dist.CLIENT)
@Mod.EventBusSubscriber(Dist.CLIENT)
@@ -57,7 +57,7 @@ public class CrumblingRenderer {
public static void renderBreaking(RenderLayerEvent event) {
if (!Backend.canUseInstancing(event.getWorld())) return;
- Int2ObjectMap> activeStages = getActiveStageTiles(event.getWorld());
+ Int2ObjectMap> activeStages = getActiveStageBlockEntities(event.getWorld());
if (activeStages.isEmpty()) return;
@@ -90,9 +90,9 @@ public class CrumblingRenderer {
}
/**
- * Associate each breaking stage with a list of all tile entities at that stage.
+ * Associate each breaking stage with a list of all block entities at that stage.
*/
- private static Int2ObjectMap> getActiveStageTiles(ClientLevel world) {
+ private static Int2ObjectMap> getActiveStageBlockEntities(ClientLevel world) {
Int2ObjectMap> breakingEntities = new Int2ObjectArrayMap<>();
@@ -105,11 +105,11 @@ public class CrumblingRenderer {
int blockDamage = progresses.last()
.getProgress();
- BlockEntity tileEntity = world.getBlockEntity(breakingPos);
+ BlockEntity blockEntity = world.getBlockEntity(breakingPos);
- if (tileEntity != null) {
- List tileEntities = breakingEntities.computeIfAbsent(blockDamage, $ -> new ArrayList<>());
- tileEntities.add(tileEntity);
+ if (blockEntity != null) {
+ List blockEntities = breakingEntities.computeIfAbsent(blockDamage, $ -> new ArrayList<>());
+ blockEntities.add(blockEntity);
}
}
}
diff --git a/src/main/java/com/jozufozu/flywheel/core/hardcoded/ModelPart.java b/src/main/java/com/jozufozu/flywheel/core/hardcoded/ModelPart.java
index 77078ffff..67bdeb798 100644
--- a/src/main/java/com/jozufozu/flywheel/core/hardcoded/ModelPart.java
+++ b/src/main/java/com/jozufozu/flywheel/core/hardcoded/ModelPart.java
@@ -2,9 +2,9 @@ package com.jozufozu.flywheel.core.hardcoded;
import java.util.List;
+import com.jozufozu.flywheel.api.vertex.VertexList;
import com.jozufozu.flywheel.core.Formats;
import com.jozufozu.flywheel.core.model.Model;
-import com.jozufozu.flywheel.api.vertex.VertexList;
import com.jozufozu.flywheel.core.vertex.PosTexNormalWriterUnsafe;
import com.mojang.blaze3d.platform.MemoryTracker;
diff --git a/src/main/java/com/jozufozu/flywheel/core/materials/FlatLit.java b/src/main/java/com/jozufozu/flywheel/core/materials/FlatLit.java
index 038a7250a..3829a1a84 100644
--- a/src/main/java/com/jozufozu/flywheel/core/materials/FlatLit.java
+++ b/src/main/java/com/jozufozu/flywheel/core/materials/FlatLit.java
@@ -14,14 +14,14 @@ public interface FlatLit> {
/**
* @param blockLight An integer in the range [0, 15] representing the
* amount of block light this instance should receive.
- * @return this
+ * @return {@code this}
*/
D setBlockLight(int blockLight);
/**
* @param skyLight An integer in the range [0, 15] representing the
* amount of sky light this instance should receive.
- * @return this
+ * @return {@code this}
*/
D setSkyLight(int skyLight);
diff --git a/src/main/java/com/jozufozu/flywheel/core/materials/model/ModelType.java b/src/main/java/com/jozufozu/flywheel/core/materials/model/ModelType.java
index fdd5127b0..67172a308 100644
--- a/src/main/java/com/jozufozu/flywheel/core/materials/model/ModelType.java
+++ b/src/main/java/com/jozufozu/flywheel/core/materials/model/ModelType.java
@@ -3,11 +3,11 @@ package com.jozufozu.flywheel.core.materials.model;
import com.jozufozu.flywheel.api.struct.Batched;
import com.jozufozu.flywheel.api.struct.Instanced;
import com.jozufozu.flywheel.api.struct.StructWriter;
-import com.jozufozu.flywheel.core.layout.CommonItems;
-import com.jozufozu.flywheel.core.layout.MatrixItems;
-import com.jozufozu.flywheel.core.layout.BufferLayout;
import com.jozufozu.flywheel.backend.gl.buffer.VecBuffer;
import com.jozufozu.flywheel.core.Programs;
+import com.jozufozu.flywheel.core.layout.BufferLayout;
+import com.jozufozu.flywheel.core.layout.CommonItems;
+import com.jozufozu.flywheel.core.layout.MatrixItems;
import com.jozufozu.flywheel.core.model.ModelTransformer;
import net.minecraft.resources.ResourceLocation;
diff --git a/src/main/java/com/jozufozu/flywheel/core/materials/model/ModelWriterUnsafe.java b/src/main/java/com/jozufozu/flywheel/core/materials/model/ModelWriterUnsafe.java
index 354751f4e..6f3682040 100644
--- a/src/main/java/com/jozufozu/flywheel/core/materials/model/ModelWriterUnsafe.java
+++ b/src/main/java/com/jozufozu/flywheel/core/materials/model/ModelWriterUnsafe.java
@@ -1,7 +1,7 @@
package com.jozufozu.flywheel.core.materials.model;
-import com.jozufozu.flywheel.backend.gl.buffer.VecBuffer;
import com.jozufozu.flywheel.api.struct.StructType;
+import com.jozufozu.flywheel.backend.gl.buffer.VecBuffer;
import com.jozufozu.flywheel.core.materials.BasicWriterUnsafe;
import com.jozufozu.flywheel.util.MatrixWrite;
diff --git a/src/main/java/com/jozufozu/flywheel/core/materials/oriented/OrientedType.java b/src/main/java/com/jozufozu/flywheel/core/materials/oriented/OrientedType.java
index d2f7e57eb..c74056390 100644
--- a/src/main/java/com/jozufozu/flywheel/core/materials/oriented/OrientedType.java
+++ b/src/main/java/com/jozufozu/flywheel/core/materials/oriented/OrientedType.java
@@ -3,10 +3,10 @@ package com.jozufozu.flywheel.core.materials.oriented;
import com.jozufozu.flywheel.api.struct.Batched;
import com.jozufozu.flywheel.api.struct.Instanced;
import com.jozufozu.flywheel.api.struct.StructWriter;
-import com.jozufozu.flywheel.core.layout.CommonItems;
-import com.jozufozu.flywheel.core.layout.BufferLayout;
import com.jozufozu.flywheel.backend.gl.buffer.VecBuffer;
import com.jozufozu.flywheel.core.Programs;
+import com.jozufozu.flywheel.core.layout.BufferLayout;
+import com.jozufozu.flywheel.core.layout.CommonItems;
import com.jozufozu.flywheel.core.model.ModelTransformer;
import com.mojang.math.Quaternion;
diff --git a/src/main/java/com/jozufozu/flywheel/core/materials/oriented/OrientedWriterUnsafe.java b/src/main/java/com/jozufozu/flywheel/core/materials/oriented/OrientedWriterUnsafe.java
index f7db693a3..f7afd8c2b 100644
--- a/src/main/java/com/jozufozu/flywheel/core/materials/oriented/OrientedWriterUnsafe.java
+++ b/src/main/java/com/jozufozu/flywheel/core/materials/oriented/OrientedWriterUnsafe.java
@@ -2,8 +2,8 @@ package com.jozufozu.flywheel.core.materials.oriented;
import org.lwjgl.system.MemoryUtil;
-import com.jozufozu.flywheel.backend.gl.buffer.VecBuffer;
import com.jozufozu.flywheel.api.struct.StructType;
+import com.jozufozu.flywheel.backend.gl.buffer.VecBuffer;
import com.jozufozu.flywheel.core.materials.BasicWriterUnsafe;
public class OrientedWriterUnsafe extends BasicWriterUnsafe {
diff --git a/src/main/java/com/jozufozu/flywheel/core/model/WorldModel.java b/src/main/java/com/jozufozu/flywheel/core/model/WorldModel.java
index b3e96aa7d..c350361c9 100644
--- a/src/main/java/com/jozufozu/flywheel/core/model/WorldModel.java
+++ b/src/main/java/com/jozufozu/flywheel/core/model/WorldModel.java
@@ -16,7 +16,7 @@ public class WorldModel implements Model {
private final String name;
/**
- * It is expected that renderWorld.getShade(...)
returns a constant.
+ * It is expected that {@code renderWorld.getShade(...)} returns a constant.
*/
public WorldModel(BlockAndTintGetter renderWorld, RenderType layer, Collection blocks, String name) {
reader = Formats.BLOCK.createReader(ModelUtil.getBufferBuilderFromTemplate(renderWorld, layer, blocks));
diff --git a/src/main/java/com/jozufozu/flywheel/core/shader/ExtensibleGlProgram.java b/src/main/java/com/jozufozu/flywheel/core/shader/ExtensibleGlProgram.java
index 72f642020..05ef8dc73 100644
--- a/src/main/java/com/jozufozu/flywheel/core/shader/ExtensibleGlProgram.java
+++ b/src/main/java/com/jozufozu/flywheel/core/shader/ExtensibleGlProgram.java
@@ -7,13 +7,13 @@ import javax.annotation.Nonnull;
import com.jozufozu.flywheel.backend.ShaderContext;
import com.jozufozu.flywheel.backend.gl.shader.GlProgram;
-import com.jozufozu.flywheel.core.shader.extension.IExtensionInstance;
+import com.jozufozu.flywheel.core.shader.extension.ExtensionInstance;
import net.minecraft.resources.ResourceLocation;
/**
* A shader program that be arbitrarily "extended". This class can take in any number of program extensions, and
- * will initialize them and then call their {@link IExtensionInstance#bind() bind} function every subsequent time this
+ * will initialize them and then call their {@link ExtensionInstance#bind() bind} function every subsequent time this
* program is bound. An "extension" is something that interacts with the shader program in a way that is invisible to
* the caller using the program. This is used by some programs to implement the different fog modes. Other uses might
* include binding extra textures to allow for blocks to have normal maps, for example. As the extensions are
@@ -22,7 +22,7 @@ import net.minecraft.resources.ResourceLocation;
*/
public class ExtensibleGlProgram extends GlProgram {
- protected final List extensions = new ArrayList<>();
+ protected final List extensions = new ArrayList<>();
public ExtensibleGlProgram(ResourceLocation name, int handle) {
super(name, handle);
@@ -32,7 +32,7 @@ public class ExtensibleGlProgram extends GlProgram {
public void bind() {
super.bind();
- extensions.forEach(IExtensionInstance::bind);
+ extensions.forEach(ExtensionInstance::bind);
}
@Override
@@ -42,7 +42,7 @@ public class ExtensibleGlProgram extends GlProgram {
.append(name)
.append('[');
- for (IExtensionInstance extension : extensions) {
+ for (ExtensionInstance extension : extensions) {
builder.append(extension)
.append('+');
}
diff --git a/src/main/java/com/jozufozu/flywheel/core/shader/extension/IExtensionInstance.java b/src/main/java/com/jozufozu/flywheel/core/shader/extension/ExtensionInstance.java
similarity index 87%
rename from src/main/java/com/jozufozu/flywheel/core/shader/extension/IExtensionInstance.java
rename to src/main/java/com/jozufozu/flywheel/core/shader/extension/ExtensionInstance.java
index d6c2e0f04..6499820c9 100644
--- a/src/main/java/com/jozufozu/flywheel/core/shader/extension/IExtensionInstance.java
+++ b/src/main/java/com/jozufozu/flywheel/core/shader/extension/ExtensionInstance.java
@@ -2,7 +2,7 @@ package com.jozufozu.flywheel.core.shader.extension;
import net.minecraft.resources.ResourceLocation;
-public interface IExtensionInstance {
+public interface ExtensionInstance {
/**
* Bind the extra program state. It is recommended to grab the state information from global variables.
diff --git a/src/main/java/com/jozufozu/flywheel/core/shader/extension/UnitExtensionInstance.java b/src/main/java/com/jozufozu/flywheel/core/shader/extension/UnitExtensionInstance.java
index ac3dcc36e..70d1bff4b 100644
--- a/src/main/java/com/jozufozu/flywheel/core/shader/extension/UnitExtensionInstance.java
+++ b/src/main/java/com/jozufozu/flywheel/core/shader/extension/UnitExtensionInstance.java
@@ -5,7 +5,7 @@ import com.jozufozu.flywheel.backend.gl.shader.GlProgram;
import net.minecraft.resources.ResourceLocation;
-public class UnitExtensionInstance implements IExtensionInstance {
+public class UnitExtensionInstance implements ExtensionInstance {
public static final ResourceLocation NAME = Flywheel.rl("unit");
diff --git a/src/main/java/com/jozufozu/flywheel/core/shader/extension/WorldFog.java b/src/main/java/com/jozufozu/flywheel/core/shader/extension/WorldFog.java
index b76c370eb..dd371debd 100644
--- a/src/main/java/com/jozufozu/flywheel/core/shader/extension/WorldFog.java
+++ b/src/main/java/com/jozufozu/flywheel/core/shader/extension/WorldFog.java
@@ -8,7 +8,7 @@ import com.mojang.blaze3d.systems.RenderSystem;
import net.minecraft.resources.ResourceLocation;
-public class WorldFog implements IExtensionInstance {
+public class WorldFog implements ExtensionInstance {
public static final ResourceLocation NAME = Flywheel.rl("fog");
diff --git a/src/main/java/com/jozufozu/flywheel/core/shader/gamestate/IGameStateProvider.java b/src/main/java/com/jozufozu/flywheel/core/shader/gamestate/GameStateProvider.java
similarity index 60%
rename from src/main/java/com/jozufozu/flywheel/core/shader/gamestate/IGameStateProvider.java
rename to src/main/java/com/jozufozu/flywheel/core/shader/gamestate/GameStateProvider.java
index 78fb00d07..152ee113d 100644
--- a/src/main/java/com/jozufozu/flywheel/core/shader/gamestate/IGameStateProvider.java
+++ b/src/main/java/com/jozufozu/flywheel/core/shader/gamestate/GameStateProvider.java
@@ -5,9 +5,9 @@ import com.mojang.serialization.Codec;
import net.minecraft.resources.ResourceLocation;
-public interface IGameStateProvider {
+public interface GameStateProvider {
- Codec CODEC = ResourceLocation.CODEC.xmap(GameStateRegistry::getStateProvider, IGameStateProvider::getID);
+ Codec CODEC = ResourceLocation.CODEC.xmap(GameStateRegistry::getStateProvider, GameStateProvider::getID);
ResourceLocation getID();
diff --git a/src/main/java/com/jozufozu/flywheel/core/shader/spec/BooleanStateProvider.java b/src/main/java/com/jozufozu/flywheel/core/shader/spec/BooleanStateProvider.java
new file mode 100644
index 000000000..1cf0b1da2
--- /dev/null
+++ b/src/main/java/com/jozufozu/flywheel/core/shader/spec/BooleanStateProvider.java
@@ -0,0 +1,13 @@
+package com.jozufozu.flywheel.core.shader.spec;
+
+import com.jozufozu.flywheel.core.shader.gamestate.GameStateProvider;
+
+public interface BooleanStateProvider extends GameStateProvider {
+
+ boolean isTrue();
+
+ @Override
+ default Boolean getValue() {
+ return isTrue();
+ }
+}
diff --git a/src/main/java/com/jozufozu/flywheel/core/shader/spec/ProgramSpec.java b/src/main/java/com/jozufozu/flywheel/core/shader/spec/ProgramSpec.java
index f9e105f98..f79169806 100644
--- a/src/main/java/com/jozufozu/flywheel/core/shader/spec/ProgramSpec.java
+++ b/src/main/java/com/jozufozu/flywheel/core/shader/spec/ProgramSpec.java
@@ -17,11 +17,11 @@ import net.minecraft.resources.ResourceLocation;
* An object describing a shader program that can be loaded by flywheel.
*
*
- * These are defined through json. All ProgramSpecs in assets/modid/flywheel/programs
are parsed and
+ * These are defined through json. All ProgramSpecs in {@code assets/modid/flywheel/programs} are parsed and
* processed. One ProgramSpec typically specifies one "material" that can be used in game to render things.
*
*
- * All shader source files in assets/modid/flywheel/shaders
are completely loaded and parsed into
+ * All shader source files in {@code assets/modid/flywheel/shaders} are completely loaded and parsed into
* {@link SourceFile SourceFiles}, but not compiled until one of them is
* referenced by a ProgramSpec.
*
diff --git a/src/main/java/com/jozufozu/flywheel/core/virtual/VirtualRenderWorld.java b/src/main/java/com/jozufozu/flywheel/core/virtual/VirtualRenderWorld.java
index bfd246988..a0687b992 100644
--- a/src/main/java/com/jozufozu/flywheel/core/virtual/VirtualRenderWorld.java
+++ b/src/main/java/com/jozufozu/flywheel/core/virtual/VirtualRenderWorld.java
@@ -43,7 +43,7 @@ import net.minecraft.world.ticks.LevelTickAccess;
public class VirtualRenderWorld extends Level implements FlywheelWorld {
public final Map blocksAdded = new HashMap<>();
- public final Map tesAdded = new HashMap<>();
+ public final Map besAdded = new HashMap<>();
public final Set spannedSections = new HashSet<>();
private final BlockPos.MutableBlockPos scratch = new BlockPos.MutableBlockPos();
@@ -85,9 +85,9 @@ public class VirtualRenderWorld extends Level implements FlywheelWorld {
lighter.runUpdates(Integer.MAX_VALUE, false, false);
}
- public void setTileEntities(Collection tileEntities) {
- tesAdded.clear();
- tileEntities.forEach(te -> tesAdded.put(te.getBlockPos(), te));
+ public void setBlockEntities(Collection blockEntities) {
+ besAdded.clear();
+ blockEntities.forEach(be -> besAdded.put(be.getBlockPos(), be));
}
public void clear() {
@@ -153,7 +153,7 @@ public class VirtualRenderWorld extends Level implements FlywheelWorld {
@Override
@Nullable
public BlockEntity getBlockEntity(BlockPos pos) {
- return tesAdded.get(pos);
+ return besAdded.get(pos);
}
@Override
diff --git a/src/main/java/com/jozufozu/flywheel/event/BeginFrameEvent.java b/src/main/java/com/jozufozu/flywheel/event/BeginFrameEvent.java
index 2db6271ee..db4d6fd1f 100644
--- a/src/main/java/com/jozufozu/flywheel/event/BeginFrameEvent.java
+++ b/src/main/java/com/jozufozu/flywheel/event/BeginFrameEvent.java
@@ -8,28 +8,28 @@ import net.minecraftforge.eventbus.api.Event;
public class BeginFrameEvent extends Event {
private final ClientLevel world;
- private final Camera info;
- private final Frustum clippingHelper;
+ private final Camera camera;
+ private final Frustum frustum;
- public BeginFrameEvent(ClientLevel world, Camera info, Frustum clippingHelper) {
+ public BeginFrameEvent(ClientLevel world, Camera camera, Frustum frustum) {
this.world = world;
- this.info = info;
- this.clippingHelper = clippingHelper;
+ this.camera = camera;
+ this.frustum = frustum;
}
public ClientLevel getWorld() {
return world;
}
- public Camera getInfo() {
- return info;
+ public Camera getCamera() {
+ return camera;
}
- public Frustum getClippingHelper() {
- return clippingHelper;
+ public Frustum getFrustum() {
+ return frustum;
}
public Vec3 getCameraPos() {
- return info.getPosition();
+ return camera.getPosition();
}
}
diff --git a/src/main/java/com/jozufozu/flywheel/mixin/BlockEntityTypeMixin.java b/src/main/java/com/jozufozu/flywheel/mixin/BlockEntityTypeMixin.java
new file mode 100644
index 000000000..ba5b86e18
--- /dev/null
+++ b/src/main/java/com/jozufozu/flywheel/mixin/BlockEntityTypeMixin.java
@@ -0,0 +1,29 @@
+package com.jozufozu.flywheel.mixin;
+
+import javax.annotation.Nullable;
+
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.Unique;
+
+import com.jozufozu.flywheel.backend.instancing.blockentity.BlockEntityInstancingController;
+import com.jozufozu.flywheel.backend.instancing.blockentity.BlockEntityTypeExtension;
+
+import net.minecraft.world.level.block.entity.BlockEntity;
+import net.minecraft.world.level.block.entity.BlockEntityType;
+
+@Mixin(BlockEntityType.class)
+public class BlockEntityTypeMixin implements BlockEntityTypeExtension {
+ @Unique
+ private BlockEntityInstancingController super T> flywheel$instancingController;
+
+ @Override
+ @Nullable
+ public BlockEntityInstancingController super T> flywheel$getInstancingController() {
+ return flywheel$instancingController;
+ }
+
+ @Override
+ public void flywheel$setInstancingController(@Nullable BlockEntityInstancingController super T> instancingController) {
+ this.flywheel$instancingController = instancingController;
+ }
+}
diff --git a/src/main/java/com/jozufozu/flywheel/mixin/BufferBuilderMixin.java b/src/main/java/com/jozufozu/flywheel/mixin/BufferBuilderMixin.java
index a105affa3..6b13b9a92 100644
--- a/src/main/java/com/jozufozu/flywheel/mixin/BufferBuilderMixin.java
+++ b/src/main/java/com/jozufozu/flywheel/mixin/BufferBuilderMixin.java
@@ -9,15 +9,13 @@ import org.lwjgl.system.MemoryUtil;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
-import com.jozufozu.flywheel.backend.instancing.SuperBufferSource;
-import com.jozufozu.flywheel.backend.model.DirectVertexConsumer;
-import com.jozufozu.flywheel.backend.model.BufferBuilderHack;
+import com.jozufozu.flywheel.backend.model.BufferBuilderExtension;
import com.mojang.blaze3d.vertex.BufferBuilder;
import com.mojang.blaze3d.vertex.VertexFormat;
import com.mojang.blaze3d.vertex.VertexFormatElement;
@Mixin(BufferBuilder.class)
-public abstract class BufferBuilderMixin implements BufferBuilderHack {
+public abstract class BufferBuilderMixin implements BufferBuilderExtension {
@Shadow
private ByteBuffer buffer;
@@ -52,7 +50,7 @@ public abstract class BufferBuilderMixin implements BufferBuilderHack {
}
@Override
- public void flywheel$hackBegin(@Nonnull ByteBuffer buffer, @Nonnull VertexFormat format, int vertexCount) {
+ public void flywheel$injectForRender(@Nonnull ByteBuffer buffer, @Nonnull VertexFormat format, int vertexCount) {
this.building = true;
this.mode = VertexFormat.Mode.QUADS;
diff --git a/src/main/java/com/jozufozu/flywheel/mixin/BufferUploaderAccessor.java b/src/main/java/com/jozufozu/flywheel/mixin/BufferUploaderAccessor.java
index 64b81bd2b..f7d609805 100644
--- a/src/main/java/com/jozufozu/flywheel/mixin/BufferUploaderAccessor.java
+++ b/src/main/java/com/jozufozu/flywheel/mixin/BufferUploaderAccessor.java
@@ -21,4 +21,19 @@ public interface BufferUploaderAccessor {
static void flywheel$setLastEBO(int id) {
throw new AssertionError();
}
+
+ @Accessor("lastIndexBufferObject")
+ static int flywheel$getLastEBO() {
+ throw new AssertionError();
+ }
+
+ @Accessor("lastVertexBufferObject")
+ static int flywheel$getLastVBO() {
+ throw new AssertionError();
+ }
+
+ @Accessor("lastVertexArrayObject")
+ static int flywheel$getLastVAO() {
+ throw new AssertionError();
+ }
}
diff --git a/src/main/java/com/jozufozu/flywheel/mixin/CameraMixin.java b/src/main/java/com/jozufozu/flywheel/mixin/CameraMixin.java
new file mode 100644
index 000000000..52e6043ef
--- /dev/null
+++ b/src/main/java/com/jozufozu/flywheel/mixin/CameraMixin.java
@@ -0,0 +1,21 @@
+package com.jozufozu.flywheel.mixin;
+
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.injection.At;
+import org.spongepowered.asm.mixin.injection.Inject;
+import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
+
+import com.jozufozu.flywheel.core.LastActiveCamera;
+
+import net.minecraft.client.Camera;
+import net.minecraft.world.entity.Entity;
+import net.minecraft.world.level.BlockGetter;
+
+@Mixin(Camera.class)
+public class CameraMixin {
+
+ @Inject(method = "setup", at = @At("TAIL"))
+ private void setup(BlockGetter level, Entity entity, boolean is3rdPerson, boolean isMirrored, float pt, CallbackInfo ci) {
+ LastActiveCamera._setActiveCamera((Camera)(Object) this);
+ }
+}
diff --git a/src/main/java/com/jozufozu/flywheel/mixin/CancelEntityRenderMixin.java b/src/main/java/com/jozufozu/flywheel/mixin/CancelEntityRenderMixin.java
index 0e64a35ed..ed1a41e6e 100644
--- a/src/main/java/com/jozufozu/flywheel/mixin/CancelEntityRenderMixin.java
+++ b/src/main/java/com/jozufozu/flywheel/mixin/CancelEntityRenderMixin.java
@@ -24,11 +24,9 @@ public class CancelEntityRenderMixin {
private Iterable filterEntities(ClientLevel world) {
Iterable entities = world.entitiesForRendering();
if (Backend.isOn()) {
-
ArrayList filtered = Lists.newArrayList(entities);
- InstancedRenderRegistry r = InstancedRenderRegistry.getInstance();
- filtered.removeIf(r::shouldSkipRender);
+ filtered.removeIf(InstancedRenderRegistry::shouldSkipRender);
return filtered;
}
diff --git a/src/main/java/com/jozufozu/flywheel/mixin/ChunkRebuildHooksMixin.java b/src/main/java/com/jozufozu/flywheel/mixin/ChunkRebuildHooksMixin.java
index 861fa7c06..a4accbe24 100644
--- a/src/main/java/com/jozufozu/flywheel/mixin/ChunkRebuildHooksMixin.java
+++ b/src/main/java/com/jozufozu/flywheel/mixin/ChunkRebuildHooksMixin.java
@@ -22,14 +22,11 @@ public class ChunkRebuildHooksMixin {
@Inject(method = "handleBlockEntity", at = @At("HEAD"), cancellable = true)
private void addAndFilterBEs(ChunkRenderDispatcher.CompiledChunk compiledChunk, Set set, E be, CallbackInfo ci) {
-
if (Backend.canUseInstancing(be.getLevel())) {
+ if (InstancedRenderRegistry.canInstance(be.getType()))
+ InstancedRenderDispatcher.getBlockEntities(be.getLevel()).queueAdd(be);
- InstancedRenderRegistry registry = InstancedRenderRegistry.getInstance();
- if (registry.canInstance(be.getType()))
- InstancedRenderDispatcher.getTiles(be.getLevel()).queueAdd(be);
-
- if (registry.shouldSkipRender(be))
+ if (InstancedRenderRegistry.shouldSkipRender(be))
ci.cancel();
}
}
diff --git a/src/main/java/com/jozufozu/flywheel/mixin/EntityTypeMixin.java b/src/main/java/com/jozufozu/flywheel/mixin/EntityTypeMixin.java
new file mode 100644
index 000000000..fdd14c9d2
--- /dev/null
+++ b/src/main/java/com/jozufozu/flywheel/mixin/EntityTypeMixin.java
@@ -0,0 +1,29 @@
+package com.jozufozu.flywheel.mixin;
+
+import javax.annotation.Nullable;
+
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.Unique;
+
+import com.jozufozu.flywheel.backend.instancing.entity.EntityInstancingController;
+import com.jozufozu.flywheel.backend.instancing.entity.EntityTypeExtension;
+
+import net.minecraft.world.entity.Entity;
+import net.minecraft.world.entity.EntityType;
+
+@Mixin(EntityType.class)
+public class EntityTypeMixin implements EntityTypeExtension {
+ @Unique
+ private EntityInstancingController super T> flywheel$instancingController;
+
+ @Override
+ @Nullable
+ public EntityInstancingController super T> flywheel$getInstancingController() {
+ return flywheel$instancingController;
+ }
+
+ @Override
+ public void flywheel$setInstancingController(@Nullable EntityInstancingController super T> instancingController) {
+ this.flywheel$instancingController = instancingController;
+ }
+}
diff --git a/src/main/java/com/jozufozu/flywheel/mixin/FrustumMixin.java b/src/main/java/com/jozufozu/flywheel/mixin/FrustumMixin.java
new file mode 100644
index 000000000..c0edf6bf0
--- /dev/null
+++ b/src/main/java/com/jozufozu/flywheel/mixin/FrustumMixin.java
@@ -0,0 +1,25 @@
+package com.jozufozu.flywheel.mixin;
+
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.injection.At;
+import org.spongepowered.asm.mixin.injection.Inject;
+import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
+
+import com.jozufozu.flywheel.backend.OptifineHandler;
+import com.jozufozu.flywheel.core.LastActiveCamera;
+import com.jozufozu.flywheel.event.BeginFrameEvent;
+
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.renderer.culling.Frustum;
+import net.minecraftforge.common.MinecraftForge;
+
+@Mixin(Frustum.class)
+public class FrustumMixin {
+
+ @Inject(method = "prepare", at = @At("TAIL"))
+ private void onPrepare(double x, double y, double z, CallbackInfo ci) {
+ if (OptifineHandler.isShadowPass()) {
+ MinecraftForge.EVENT_BUS.post(new BeginFrameEvent(Minecraft.getInstance().level, LastActiveCamera.getActiveCamera(), (Frustum) (Object) this));
+ }
+ }
+}
diff --git a/src/main/java/com/jozufozu/flywheel/mixin/InstanceAddMixin.java b/src/main/java/com/jozufozu/flywheel/mixin/InstanceAddMixin.java
index 53137d485..b28fbfa84 100644
--- a/src/main/java/com/jozufozu/flywheel/mixin/InstanceAddMixin.java
+++ b/src/main/java/com/jozufozu/flywheel/mixin/InstanceAddMixin.java
@@ -26,9 +26,9 @@ public class InstanceAddMixin {
@Inject(method = "setBlockEntity",
at = @At(value = "INVOKE_ASSIGN", target = "Ljava/util/Map;put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;"))
- private void tileAdded(BlockEntity be, CallbackInfo ci) {
+ private void blockEntityAdded(BlockEntity be, CallbackInfo ci) {
if (level.isClientSide && Backend.isOn()) {
- InstancedRenderDispatcher.getTiles(this.level)
+ InstancedRenderDispatcher.getBlockEntities(this.level)
.add(be);
}
}
diff --git a/src/main/java/com/jozufozu/flywheel/mixin/InstanceRemoveMixin.java b/src/main/java/com/jozufozu/flywheel/mixin/InstanceRemoveMixin.java
index 9a6862ddf..0ee0fd088 100644
--- a/src/main/java/com/jozufozu/flywheel/mixin/InstanceRemoveMixin.java
+++ b/src/main/java/com/jozufozu/flywheel/mixin/InstanceRemoveMixin.java
@@ -25,18 +25,18 @@ public class InstanceRemoveMixin {
@Inject(at = @At("TAIL"), method = "setRemoved")
private void removeInstance(CallbackInfo ci) {
if (level instanceof ClientLevel && Backend.isOn()) {
- InstancedRenderDispatcher.getTiles(this.level)
+ InstancedRenderDispatcher.getBlockEntities(this.level)
.remove((BlockEntity) (Object) this);
}
}
// /**
// * Don't do this.
-// * It can cause infinite loops if an instance class tries to access another tile entity in its constructor.
+// * It can cause infinite loops if an instance class tries to access another block entity in its constructor.
// */
// @Inject(at = @At("TAIL"), method = "clearRemoved")
// private void addInstance(CallbackInfo ci) {
-// if (level.isClientSide) InstancedRenderDispatcher.getTiles(this.level)
+// if (level.isClientSide) InstancedRenderDispatcher.getBlockEntities(this.level)
// .add((BlockEntity) (Object) this);
// }
}
diff --git a/src/main/java/com/jozufozu/flywheel/mixin/RenderHooksMixin.java b/src/main/java/com/jozufozu/flywheel/mixin/LevelRendererMixin.java
similarity index 94%
rename from src/main/java/com/jozufozu/flywheel/mixin/RenderHooksMixin.java
rename to src/main/java/com/jozufozu/flywheel/mixin/LevelRendererMixin.java
index 5452c100e..3dbe19701 100644
--- a/src/main/java/com/jozufozu/flywheel/mixin/RenderHooksMixin.java
+++ b/src/main/java/com/jozufozu/flywheel/mixin/LevelRendererMixin.java
@@ -33,7 +33,7 @@ import net.minecraftforge.common.MinecraftForge;
@OnlyIn(Dist.CLIENT)
@Mixin(LevelRenderer.class)
-public class RenderHooksMixin {
+public class LevelRendererMixin {
@Shadow
private ClientLevel level;
@@ -52,7 +52,7 @@ public class RenderHooksMixin {
* layer-correct custom rendering. RenderWorldLast is not refined enough for rendering world objects.
* This should probably be a forge event.
*/
- @Inject(at = @At("TAIL"), method = "renderChunkLayer")
+ @Inject(at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/ShaderInstance;clear()V"), method = "renderChunkLayer")
private void renderLayer(RenderType type, PoseStack stack, double camX, double camY, double camZ, Matrix4f p_172999_, CallbackInfo ci) {
RenderBuffers renderBuffers = this.renderBuffers;
@@ -87,7 +87,7 @@ public class RenderHooksMixin {
@Inject(at = @At("TAIL"), method = "setBlockDirty(Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/block/state/BlockState;)V")
private void checkUpdate(BlockPos pos, BlockState lastState, BlockState newState, CallbackInfo ci) {
if (Backend.isOn()) {
- InstancedRenderDispatcher.getTiles(level)
+ InstancedRenderDispatcher.getBlockEntities(level)
.update(level.getBlockEntity(pos));
}
}
diff --git a/src/main/java/com/jozufozu/flywheel/mixin/RenderTypeMixin.java b/src/main/java/com/jozufozu/flywheel/mixin/RenderTypeMixin.java
new file mode 100644
index 000000000..c3a3d7b5d
--- /dev/null
+++ b/src/main/java/com/jozufozu/flywheel/mixin/RenderTypeMixin.java
@@ -0,0 +1,24 @@
+package com.jozufozu.flywheel.mixin;
+
+import javax.annotation.Nonnull;
+
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.Unique;
+
+import com.jozufozu.flywheel.backend.instancing.DrawBuffer;
+import com.jozufozu.flywheel.backend.instancing.RenderTypeExtension;
+
+import net.minecraft.client.renderer.RenderType;
+
+@Mixin(RenderType.class)
+public class RenderTypeMixin implements RenderTypeExtension {
+
+ @Unique
+ private final DrawBuffer flywheel$drawBuffer = new DrawBuffer((RenderType) (Object) this);
+
+ @Override
+ @Nonnull
+ public DrawBuffer flywheel$getDrawBuffer() {
+ return flywheel$drawBuffer;
+ }
+}
diff --git a/src/main/java/com/jozufozu/flywheel/vanilla/BellInstance.java b/src/main/java/com/jozufozu/flywheel/vanilla/BellInstance.java
index c66e41b63..0da987881 100644
--- a/src/main/java/com/jozufozu/flywheel/vanilla/BellInstance.java
+++ b/src/main/java/com/jozufozu/flywheel/vanilla/BellInstance.java
@@ -1,11 +1,11 @@
package com.jozufozu.flywheel.vanilla;
import com.jozufozu.flywheel.api.MaterialManager;
-import com.jozufozu.flywheel.api.instance.IDynamicInstance;
-import com.jozufozu.flywheel.backend.instancing.tile.TileEntityInstance;
+import com.jozufozu.flywheel.api.instance.DynamicInstance;
+import com.jozufozu.flywheel.backend.instancing.blockentity.BlockEntityInstance;
import com.jozufozu.flywheel.core.Materials;
-import com.jozufozu.flywheel.core.materials.oriented.OrientedData;
import com.jozufozu.flywheel.core.hardcoded.ModelPart;
+import com.jozufozu.flywheel.core.materials.oriented.OrientedData;
import com.jozufozu.flywheel.util.AnimationTickHolder;
import com.mojang.math.Quaternion;
import com.mojang.math.Vector3f;
@@ -14,14 +14,14 @@ import net.minecraft.client.renderer.blockentity.BellRenderer;
import net.minecraft.util.Mth;
import net.minecraft.world.level.block.entity.BellBlockEntity;
-public class BellInstance extends TileEntityInstance implements IDynamicInstance {
+public class BellInstance extends BlockEntityInstance implements DynamicInstance {
private final OrientedData bell;
private float lastRingTime = Float.NaN;
- public BellInstance(MaterialManager materialManager, BellBlockEntity tile) {
- super(materialManager, tile);
+ public BellInstance(MaterialManager materialManager, BellBlockEntity blockEntity) {
+ super(materialManager, blockEntity);
bell = createBellInstance()
.setPivot(0.5f, 0.75f, 0.5f)
@@ -30,15 +30,15 @@ public class BellInstance extends TileEntityInstance implements
@Override
public void beginFrame() {
- float ringTime = (float)tile.ticks + AnimationTickHolder.getPartialTicks();
+ float ringTime = (float)blockEntity.ticks + AnimationTickHolder.getPartialTicks();
if (ringTime == lastRingTime) return;
lastRingTime = ringTime;
- if (tile.shaking) {
+ if (blockEntity.shaking) {
float angle = Mth.sin(ringTime / (float) Math.PI) / (4.0F + ringTime / 3.0F);
- Vector3f ringAxis = tile.clickDirection.getCounterClockWise().step();
+ Vector3f ringAxis = blockEntity.clickDirection.getCounterClockWise().step();
bell.setRotation(ringAxis.rotation(angle));
} else {
@@ -59,7 +59,7 @@ public class BellInstance extends TileEntityInstance implements
private OrientedData createBellInstance() {
return materialManager.defaultCutout()
.material(Materials.ORIENTED)
- .model(tile.getType(), BellInstance::createBellModel)
+ .model(blockEntity.getType(), BellInstance::createBellModel)
.createInstance();
}
diff --git a/src/main/java/com/jozufozu/flywheel/vanilla/ChestInstance.java b/src/main/java/com/jozufozu/flywheel/vanilla/ChestInstance.java
index ab1acdebf..df834d326 100644
--- a/src/main/java/com/jozufozu/flywheel/vanilla/ChestInstance.java
+++ b/src/main/java/com/jozufozu/flywheel/vanilla/ChestInstance.java
@@ -5,12 +5,12 @@ import java.util.Calendar;
import javax.annotation.Nonnull;
import com.jozufozu.flywheel.api.MaterialManager;
-import com.jozufozu.flywheel.api.instance.IDynamicInstance;
-import com.jozufozu.flywheel.backend.instancing.tile.TileEntityInstance;
+import com.jozufozu.flywheel.api.instance.DynamicInstance;
+import com.jozufozu.flywheel.backend.instancing.blockentity.BlockEntityInstance;
import com.jozufozu.flywheel.core.Materials;
+import com.jozufozu.flywheel.core.hardcoded.ModelPart;
import com.jozufozu.flywheel.core.materials.model.ModelData;
import com.jozufozu.flywheel.core.materials.oriented.OrientedData;
-import com.jozufozu.flywheel.core.hardcoded.ModelPart;
import com.jozufozu.flywheel.util.AnimationTickHolder;
import com.mojang.math.Quaternion;
import com.mojang.math.Vector3f;
@@ -28,7 +28,7 @@ import net.minecraft.world.level.block.entity.ChestBlockEntity;
import net.minecraft.world.level.block.entity.LidBlockEntity;
import net.minecraft.world.level.block.state.properties.ChestType;
-public class ChestInstance extends TileEntityInstance implements IDynamicInstance {
+public class ChestInstance extends BlockEntityInstance implements DynamicInstance {
private final OrientedData body;
private final ModelData lid;
@@ -41,13 +41,13 @@ public class ChestInstance extends TileE
private float lastProgress = Float.NaN;
- public ChestInstance(MaterialManager materialManager, T tile) {
- super(materialManager, tile);
+ public ChestInstance(MaterialManager materialManager, T blockEntity) {
+ super(materialManager, blockEntity);
Block block = blockState.getBlock();
chestType = blockState.hasProperty(ChestBlock.TYPE) ? blockState.getValue(ChestBlock.TYPE) : ChestType.SINGLE;
- renderMaterial = Sheets.chooseMaterial(tile, chestType, isChristmas());
+ renderMaterial = Sheets.chooseMaterial(blockEntity, chestType, isChristmas());
body = baseInstance()
.setPosition(getInstancePosition());
@@ -63,7 +63,7 @@ public class ChestInstance extends TileE
DoubleBlockCombiner.NeighborCombineResult extends ChestBlockEntity> wrapper = chestBlock.combine(blockState, world, getWorldPosition(), true);
- this.lidProgress = wrapper.apply(ChestBlock.opennessCombiner(tile));
+ this.lidProgress = wrapper.apply(ChestBlock.opennessCombiner(blockEntity));
} else {
diff --git a/src/main/java/com/jozufozu/flywheel/vanilla/MinecartInstance.java b/src/main/java/com/jozufozu/flywheel/vanilla/MinecartInstance.java
index 4fe3116df..c4d06994a 100644
--- a/src/main/java/com/jozufozu/flywheel/vanilla/MinecartInstance.java
+++ b/src/main/java/com/jozufozu/flywheel/vanilla/MinecartInstance.java
@@ -1,13 +1,13 @@
package com.jozufozu.flywheel.vanilla;
import com.jozufozu.flywheel.api.MaterialManager;
-import com.jozufozu.flywheel.api.instance.IDynamicInstance;
-import com.jozufozu.flywheel.api.instance.ITickableInstance;
+import com.jozufozu.flywheel.api.instance.DynamicInstance;
+import com.jozufozu.flywheel.api.instance.TickableInstance;
import com.jozufozu.flywheel.backend.instancing.entity.EntityInstance;
import com.jozufozu.flywheel.core.Materials;
+import com.jozufozu.flywheel.core.hardcoded.ModelPart;
import com.jozufozu.flywheel.core.materials.model.ModelData;
import com.jozufozu.flywheel.core.model.Model;
-import com.jozufozu.flywheel.core.hardcoded.ModelPart;
import com.jozufozu.flywheel.util.AnimationTickHolder;
import com.jozufozu.flywheel.util.transform.MatrixTransformStack;
import com.mojang.math.Vector3f;
@@ -21,7 +21,7 @@ import net.minecraft.world.level.block.RenderShape;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.phys.Vec3;
-public class MinecartInstance extends EntityInstance implements IDynamicInstance, ITickableInstance {
+public class MinecartInstance extends EntityInstance implements DynamicInstance, TickableInstance {
private static final ResourceLocation MINECART_LOCATION = new ResourceLocation("textures/entity/minecart.png");
diff --git a/src/main/java/com/jozufozu/flywheel/vanilla/ShulkerBoxInstance.java b/src/main/java/com/jozufozu/flywheel/vanilla/ShulkerBoxInstance.java
index a64e5b0ec..167b2367a 100644
--- a/src/main/java/com/jozufozu/flywheel/vanilla/ShulkerBoxInstance.java
+++ b/src/main/java/com/jozufozu/flywheel/vanilla/ShulkerBoxInstance.java
@@ -1,11 +1,11 @@
package com.jozufozu.flywheel.vanilla;
import com.jozufozu.flywheel.api.MaterialManager;
-import com.jozufozu.flywheel.api.instance.IDynamicInstance;
-import com.jozufozu.flywheel.backend.instancing.tile.TileEntityInstance;
+import com.jozufozu.flywheel.api.instance.DynamicInstance;
+import com.jozufozu.flywheel.backend.instancing.blockentity.BlockEntityInstance;
import com.jozufozu.flywheel.core.Materials;
-import com.jozufozu.flywheel.core.materials.model.ModelData;
import com.jozufozu.flywheel.core.hardcoded.ModelPart;
+import com.jozufozu.flywheel.core.materials.model.ModelData;
import com.jozufozu.flywheel.util.AnimationTickHolder;
import com.jozufozu.flywheel.util.transform.MatrixTransformStack;
import com.mojang.math.Quaternion;
@@ -19,7 +19,7 @@ import net.minecraft.world.item.DyeColor;
import net.minecraft.world.level.block.ShulkerBoxBlock;
import net.minecraft.world.level.block.entity.ShulkerBoxBlockEntity;
-public class ShulkerBoxInstance extends TileEntityInstance implements IDynamicInstance {
+public class ShulkerBoxInstance extends BlockEntityInstance implements DynamicInstance {
private final TextureAtlasSprite texture;
@@ -29,10 +29,10 @@ public class ShulkerBoxInstance extends TileEntityInstance