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/GameStateProgram.java b/src/main/java/com/jozufozu/flywheel/core/shader/GameStateProgram.java
index 12bc659ad..ce6ae31cd 100644
--- a/src/main/java/com/jozufozu/flywheel/core/shader/GameStateProgram.java
+++ b/src/main/java/com/jozufozu/flywheel/core/shader/GameStateProgram.java
@@ -5,22 +5,22 @@ import java.util.List;
import com.google.common.collect.ImmutableList;
import com.jozufozu.flywheel.backend.gl.shader.GlProgram;
-import com.jozufozu.flywheel.core.shader.spec.IGameStateCondition;
+import com.jozufozu.flywheel.core.shader.spec.GameStateCondition;
import com.jozufozu.flywheel.util.Pair;
public class GameStateProgram implements ContextAwareProgram
{
- private final List> variants;
+ private final List> variants;
private final P fallback;
- protected GameStateProgram(List> variants, P fallback) {
+ protected GameStateProgram(List> variants, P fallback) {
this.variants = variants;
this.fallback = fallback;
}
@Override
public P get() {
- for (Pair variant : variants) {
+ for (Pair variant : variants) {
if (variant.first()
.isMet()) return variant.second();
}
@@ -30,7 +30,7 @@ public class GameStateProgram implements ContextAwareProgra
@Override
public void delete() {
- for (Pair variant : variants) {
+ for (Pair variant : variants) {
variant.second()
.delete();
}
@@ -44,13 +44,13 @@ public class GameStateProgram implements ContextAwareProgra
public static class Builder
{
private final P fallback;
- private final List> variants = new ArrayList<>();
+ private final List> variants = new ArrayList<>();
public Builder(P fallback) {
this.fallback = fallback;
}
- public Builder withVariant(IGameStateCondition condition, P program) {
+ public Builder
withVariant(GameStateCondition condition, P program) {
variants.add(Pair.of(condition, program));
return this;
}
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 8e472de72..a7f7fb0ba 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/gamestate/NormalDebugStateProvider.java b/src/main/java/com/jozufozu/flywheel/core/shader/gamestate/NormalDebugStateProvider.java
index f7ddbbea0..01646f027 100644
--- a/src/main/java/com/jozufozu/flywheel/core/shader/gamestate/NormalDebugStateProvider.java
+++ b/src/main/java/com/jozufozu/flywheel/core/shader/gamestate/NormalDebugStateProvider.java
@@ -2,11 +2,11 @@ package com.jozufozu.flywheel.core.shader.gamestate;
import com.jozufozu.flywheel.Flywheel;
import com.jozufozu.flywheel.config.FlwConfig;
-import com.jozufozu.flywheel.core.shader.spec.IBooleanStateProvider;
+import com.jozufozu.flywheel.core.shader.spec.BooleanStateProvider;
import net.minecraft.resources.ResourceLocation;
-public class NormalDebugStateProvider implements IBooleanStateProvider {
+public class NormalDebugStateProvider implements BooleanStateProvider {
public static final NormalDebugStateProvider INSTANCE = new NormalDebugStateProvider();
public static final ResourceLocation NAME = Flywheel.rl("normal_debug");
diff --git a/src/main/java/com/jozufozu/flywheel/core/shader/spec/BooleanGameStateCondition.java b/src/main/java/com/jozufozu/flywheel/core/shader/spec/BooleanGameStateCondition.java
index 6293ade94..9ff461f6b 100644
--- a/src/main/java/com/jozufozu/flywheel/core/shader/spec/BooleanGameStateCondition.java
+++ b/src/main/java/com/jozufozu/flywheel/core/shader/spec/BooleanGameStateCondition.java
@@ -1,22 +1,22 @@
package com.jozufozu.flywheel.core.shader.spec;
-import com.jozufozu.flywheel.core.shader.gamestate.IGameStateProvider;
+import com.jozufozu.flywheel.core.shader.gamestate.GameStateProvider;
import com.mojang.serialization.Codec;
import net.minecraft.resources.ResourceLocation;
-public class BooleanGameStateCondition implements IGameStateCondition {
+public class BooleanGameStateCondition implements GameStateCondition {
- public static final Codec BOOLEAN_SUGAR = IGameStateProvider.CODEC.xmap(gameContext -> {
- if (gameContext instanceof IBooleanStateProvider) {
- return new BooleanGameStateCondition(((IBooleanStateProvider) gameContext));
+ public static final Codec BOOLEAN_SUGAR = GameStateProvider.CODEC.xmap(gameContext -> {
+ if (gameContext instanceof BooleanStateProvider) {
+ return new BooleanGameStateCondition(((BooleanStateProvider) gameContext));
}
return null;
- }, IGameStateCondition::getStateProvider);
- protected final IBooleanStateProvider context;
+ }, GameStateCondition::getStateProvider);
+ protected final BooleanStateProvider context;
- public BooleanGameStateCondition(IBooleanStateProvider context) {
+ public BooleanGameStateCondition(BooleanStateProvider context) {
this.context = context;
}
@@ -26,7 +26,7 @@ public class BooleanGameStateCondition implements IGameStateCondition {
}
@Override
- public IGameStateProvider getStateProvider() {
+ public GameStateProvider getStateProvider() {
return context;
}
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/IGameStateCondition.java b/src/main/java/com/jozufozu/flywheel/core/shader/spec/GameStateCondition.java
similarity index 50%
rename from src/main/java/com/jozufozu/flywheel/core/shader/spec/IGameStateCondition.java
rename to src/main/java/com/jozufozu/flywheel/core/shader/spec/GameStateCondition.java
index 08fd87dc3..c8ad1e1cf 100644
--- a/src/main/java/com/jozufozu/flywheel/core/shader/spec/IGameStateCondition.java
+++ b/src/main/java/com/jozufozu/flywheel/core/shader/spec/GameStateCondition.java
@@ -1,14 +1,14 @@
package com.jozufozu.flywheel.core.shader.spec;
-import com.jozufozu.flywheel.core.shader.gamestate.IGameStateProvider;
+import com.jozufozu.flywheel.core.shader.gamestate.GameStateProvider;
import net.minecraft.resources.ResourceLocation;
-public interface IGameStateCondition {
+public interface GameStateCondition {
ResourceLocation getID();
- IGameStateProvider getStateProvider();
+ GameStateProvider getStateProvider();
boolean isMet();
}
diff --git a/src/main/java/com/jozufozu/flywheel/core/shader/spec/IBooleanStateProvider.java b/src/main/java/com/jozufozu/flywheel/core/shader/spec/IBooleanStateProvider.java
deleted file mode 100644
index 1f1265724..000000000
--- a/src/main/java/com/jozufozu/flywheel/core/shader/spec/IBooleanStateProvider.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.jozufozu.flywheel.core.shader.spec;
-
-import com.jozufozu.flywheel.core.shader.gamestate.IGameStateProvider;
-
-public interface IBooleanStateProvider extends IGameStateProvider {
-
- boolean isTrue();
-
- @Override
- default Boolean getValue() {
- return isTrue();
- }
-}
diff --git a/src/main/java/com/jozufozu/flywheel/core/shader/spec/ProgramState.java b/src/main/java/com/jozufozu/flywheel/core/shader/spec/ProgramState.java
index e680c4e85..7f4fc7782 100644
--- a/src/main/java/com/jozufozu/flywheel/core/shader/spec/ProgramState.java
+++ b/src/main/java/com/jozufozu/flywheel/core/shader/spec/ProgramState.java
@@ -9,10 +9,10 @@ import com.mojang.serialization.Codec;
import com.mojang.serialization.DataResult;
import com.mojang.serialization.codecs.RecordCodecBuilder;
-public record ProgramState(IGameStateCondition context, List defines) {
+public record ProgramState(GameStateCondition context, List defines) {
// TODO: Use Codec.dispatch
- private static final Codec WHEN = Codec.either(BooleanGameStateCondition.BOOLEAN_SUGAR, SpecificValueCondition.CODEC)
+ private static final Codec WHEN = Codec.either(BooleanGameStateCondition.BOOLEAN_SUGAR, SpecificValueCondition.CODEC)
.flatXmap(either -> either.map(DataResult::success, DataResult::success), any -> {
if (any instanceof BooleanGameStateCondition) {
return DataResult.success(Either.left((BooleanGameStateCondition) any));
diff --git a/src/main/java/com/jozufozu/flywheel/core/shader/spec/SpecificValueCondition.java b/src/main/java/com/jozufozu/flywheel/core/shader/spec/SpecificValueCondition.java
index 69e40a08d..fc530536e 100644
--- a/src/main/java/com/jozufozu/flywheel/core/shader/spec/SpecificValueCondition.java
+++ b/src/main/java/com/jozufozu/flywheel/core/shader/spec/SpecificValueCondition.java
@@ -1,22 +1,22 @@
package com.jozufozu.flywheel.core.shader.spec;
-import com.jozufozu.flywheel.core.shader.gamestate.IGameStateProvider;
+import com.jozufozu.flywheel.core.shader.gamestate.GameStateProvider;
import com.mojang.serialization.Codec;
import com.mojang.serialization.codecs.RecordCodecBuilder;
import net.minecraft.resources.ResourceLocation;
-public class SpecificValueCondition implements IGameStateCondition {
+public class SpecificValueCondition implements GameStateCondition {
- public static final Codec CODEC = RecordCodecBuilder.create(condition -> condition.group(IGameStateProvider.CODEC.fieldOf("provider")
+ public static final Codec CODEC = RecordCodecBuilder.create(condition -> condition.group(GameStateProvider.CODEC.fieldOf("provider")
.forGetter(SpecificValueCondition::getStateProvider), Codec.STRING.fieldOf("value")
.forGetter(SpecificValueCondition::getValue))
.apply(condition, SpecificValueCondition::new));
private final String required;
- private final IGameStateProvider context;
+ private final GameStateProvider context;
- public SpecificValueCondition(IGameStateProvider context, String required) {
+ public SpecificValueCondition(GameStateProvider context, String required) {
this.required = required;
this.context = context;
}
@@ -31,7 +31,7 @@ public class SpecificValueCondition implements IGameStateCondition {
}
@Override
- public IGameStateProvider getStateProvider() {
+ public GameStateProvider getStateProvider() {
return context;
}
diff --git a/src/main/java/com/jozufozu/flywheel/core/vertex/BlockVertex.java b/src/main/java/com/jozufozu/flywheel/core/vertex/BlockVertex.java
index eb77286fc..4a6664d0b 100644
--- a/src/main/java/com/jozufozu/flywheel/core/vertex/BlockVertex.java
+++ b/src/main/java/com/jozufozu/flywheel/core/vertex/BlockVertex.java
@@ -4,8 +4,8 @@ import java.nio.ByteBuffer;
import com.jozufozu.flywheel.api.vertex.VertexList;
import com.jozufozu.flywheel.api.vertex.VertexType;
-import com.jozufozu.flywheel.core.layout.CommonItems;
import com.jozufozu.flywheel.core.layout.BufferLayout;
+import com.jozufozu.flywheel.core.layout.CommonItems;
import com.mojang.blaze3d.vertex.BufferBuilder;
import com.mojang.blaze3d.vertex.DefaultVertexFormat;
import com.mojang.datafixers.util.Pair;
diff --git a/src/main/java/com/jozufozu/flywheel/core/vertex/PosTexNormalVertex.java b/src/main/java/com/jozufozu/flywheel/core/vertex/PosTexNormalVertex.java
index feb7ff348..85daec969 100644
--- a/src/main/java/com/jozufozu/flywheel/core/vertex/PosTexNormalVertex.java
+++ b/src/main/java/com/jozufozu/flywheel/core/vertex/PosTexNormalVertex.java
@@ -3,8 +3,8 @@ package com.jozufozu.flywheel.core.vertex;
import java.nio.ByteBuffer;
import com.jozufozu.flywheel.api.vertex.VertexType;
-import com.jozufozu.flywheel.core.layout.CommonItems;
import com.jozufozu.flywheel.core.layout.BufferLayout;
+import com.jozufozu.flywheel.core.layout.CommonItems;
public class PosTexNormalVertex implements VertexType {
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/mixin/BlockEntityTypeMixin.java b/src/main/java/com/jozufozu/flywheel/mixin/BlockEntityTypeMixin.java
new file mode 100644
index 000000000..c9f086957
--- /dev/null
+++ b/src/main/java/com/jozufozu/flywheel/mixin/BlockEntityTypeMixin.java
@@ -0,0 +1,26 @@
+package com.jozufozu.flywheel.mixin;
+
+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
+ public BlockEntityInstancingController super T> flywheel$getInstancingController() {
+ return flywheel$instancingController;
+ }
+
+ @Override
+ public void flywheel$setInstancingController(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..5a67e78a2 100644
--- a/src/main/java/com/jozufozu/flywheel/mixin/BufferBuilderMixin.java
+++ b/src/main/java/com/jozufozu/flywheel/mixin/BufferBuilderMixin.java
@@ -9,8 +9,6 @@ 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.mojang.blaze3d.vertex.BufferBuilder;
import com.mojang.blaze3d.vertex.VertexFormat;
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..828232c4a
--- /dev/null
+++ b/src/main/java/com/jozufozu/flywheel/mixin/EntityTypeMixin.java
@@ -0,0 +1,26 @@
+package com.jozufozu.flywheel.mixin;
+
+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
+ public EntityInstancingController super T> flywheel$getInstancingController() {
+ return flywheel$instancingController;
+ }
+
+ @Override
+ public void flywheel$setInstancingController(EntityInstancingController super T> instancingController) {
+ this.flywheel$instancingController = instancingController;
+ }
+}
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/RenderHooksMixin.java
index 5452c100e..a60ffd45d 100644
--- a/src/main/java/com/jozufozu/flywheel/mixin/RenderHooksMixin.java
+++ b/src/main/java/com/jozufozu/flywheel/mixin/RenderHooksMixin.java
@@ -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/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