Bumpy road

- Bump flywheel build
- Directly rotate the last pose and normal matrix in SBB
This commit is contained in:
Jozufozu 2024-07-27 17:43:24 -07:00
parent b3aba93665
commit 5be92fcde8
43 changed files with 124 additions and 123 deletions

View file

@ -23,7 +23,7 @@ use_parchment = true
# dependency versions # dependency versions
registrate_version = MC1.20-1.3.3 registrate_version = MC1.20-1.3.3
flywheel_minecraft_version = 1.20.1 flywheel_minecraft_version = 1.20.1
flywheel_version = 1.0.0-beta-98 flywheel_version = 1.0.0-beta-103
jei_minecraft_version = 1.20.1 jei_minecraft_version = 1.20.1
jei_version = 15.2.0.22 jei_version = 15.2.0.22
curios_minecraft_version = 1.20.1 curios_minecraft_version = 1.20.1

View file

@ -219,11 +219,11 @@ public class AllPartialModels {
} }
private static PartialModel block(String path) { private static PartialModel block(String path) {
return new PartialModel(Create.asResource("block/" + path)); return PartialModel.of(Create.asResource("block/" + path));
} }
private static PartialModel entity(String path) { private static PartialModel entity(String path) {
return new PartialModel(Create.asResource("entity/" + path)); return PartialModel.of(Create.asResource("entity/" + path));
} }
public static void init() { public static void init() {

View file

@ -83,7 +83,7 @@ public class HarvesterActorVisual extends ActorVisual {
@Override @Override
public void beginFrame() { public void beginFrame() {
harvester.loadIdentity() harvester.setIdentityTransform()
.translate(context.localPos) .translate(context.localPos)
.center() .center()
.rotateYDegrees(horizontalAngle) .rotateYDegrees(horizontalAngle)

View file

@ -42,14 +42,14 @@ public class PIInstance {
} }
public void beginFrame(float progress) { public void beginFrame(float progress) {
middle.loadIdentity() middle.setIdentityTransform()
.translate(instancePos) .translate(instancePos)
.center() .center()
.rotateYDegrees(angleY) .rotateYDegrees(angleY)
.rotateXDegrees(angleX) .rotateXDegrees(angleX)
.uncenter(); .uncenter();
top.loadIdentity() top.setIdentityTransform()
.translate(instancePos) .translate(instancePos)
.center() .center()
.rotateYDegrees(angleY) .rotateYDegrees(angleY)

View file

@ -27,7 +27,7 @@ public class RollerActorVisual extends HarvesterActorVisual {
@Override @Override
public void beginFrame() { public void beginFrame() {
harvester.loadIdentity() harvester.setIdentityTransform()
.translate(context.localPos) .translate(context.localPos)
.center() .center()
.rotateYDegrees(horizontalAngle) .rotateYDegrees(horizontalAngle)
@ -38,7 +38,7 @@ public class RollerActorVisual extends HarvesterActorVisual {
.rotateYDegrees(90) .rotateYDegrees(90)
.setChanged(); .setChanged();
frame.loadIdentity() frame.setIdentityTransform()
.translate(context.localPos) .translate(context.localPos)
.center() .center()
.rotateYDegrees(horizontalAngle + 180) .rotateYDegrees(horizontalAngle + 180)

View file

@ -41,8 +41,8 @@ public class BearingVisual<B extends KineticBlockEntity & IBearingBlockEntity> e
topInstance = instancerProvider.instancer(InstanceTypes.ORIENTED, Models.partial(top)) topInstance = instancerProvider.instancer(InstanceTypes.ORIENTED, Models.partial(top))
.createInstance(); .createInstance();
topInstance.setPosition(getVisualPosition()) topInstance.position(getVisualPosition())
.setRotation(blockOrientation) .rotation(blockOrientation)
.setChanged(); .setChanged();
} }
@ -53,7 +53,7 @@ public class BearingVisual<B extends KineticBlockEntity & IBearingBlockEntity> e
rot.mul(blockOrientation); rot.mul(blockOrientation);
topInstance.setRotation(rot) topInstance.rotation(rot)
.setChanged(); .setChanged();
} }

View file

@ -42,8 +42,8 @@ public class StabilizedBearingVisual extends ActorVisual {
.createInstance(); .createInstance();
int blockLight = localBlockLight(); int blockLight = localBlockLight();
topInstance.setPosition(movementContext.localPos) topInstance.position(movementContext.localPos)
.setRotation(blockOrientation) .rotation(blockOrientation)
.light(blockLight, 0); .light(blockLight, 0);
shaft = instancerProvider.instancer(AllInstanceTypes.ROTATING, Models.partial(AllPartialModels.SHAFT_HALF, blockState.getValue(BlockStateProperties.FACING).getOpposite())) shaft = instancerProvider.instancer(AllInstanceTypes.ROTATING, Models.partial(AllPartialModels.SHAFT_HALF, blockState.getValue(BlockStateProperties.FACING).getOpposite()))
@ -62,7 +62,7 @@ public class StabilizedBearingVisual extends ActorVisual {
rotation.mul(blockOrientation); rotation.mul(blockOrientation);
topInstance.setRotation(rotation); topInstance.rotation(rotation);
} }
@Override @Override

View file

@ -11,7 +11,7 @@ import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour
import com.simibubi.create.foundation.utility.animation.LerpedFloat; import com.simibubi.create.foundation.utility.animation.LerpedFloat;
import com.simibubi.create.foundation.utility.animation.LerpedFloat.Chaser; import com.simibubi.create.foundation.utility.animation.LerpedFloat.Chaser;
import dev.engine_room.flywheel.api.visualization.VisualizationManager; import dev.engine_room.flywheel.lib.visualization.VisualizationHelper;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction; import net.minecraft.core.Direction;
@ -70,7 +70,7 @@ public class StickerBlockEntity extends SmartBlockEntity {
DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> playSound(false)); DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> playSound(false));
piston.chase(target, .4f, Chaser.LINEAR); piston.chase(target, .4f, Chaser.LINEAR);
DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> VisualizationManager.queueUpdate(this)); DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> VisualizationHelper.queueUpdate(this));
} }
public boolean isAttachedToBlock() { public boolean isAttachedToBlock() {

View file

@ -54,7 +54,7 @@ public class StickerVisual extends AbstractBlockEntityVisual<StickerBlockEntity>
} }
private void animateHead(float offset) { private void animateHead(float offset) {
head.loadIdentity() head.setIdentityTransform()
.translate(getVisualPosition()) .translate(getVisualPosition())
.nudge(blockEntity.hashCode()) .nudge(blockEntity.hashCode())
.center() .center()

View file

@ -64,7 +64,7 @@ public class GantryCarriageVisual extends ShaftVisual<GantryCarriageBlockEntity>
} }
private void animateCogs(float cogAngle) { private void animateCogs(float cogAngle) {
gantryCogs.loadIdentity() gantryCogs.setIdentityTransform()
.translate(getVisualPosition()) .translate(getVisualPosition())
.center() .center()
.rotateYDegrees(AngleHelper.horizontalAngle(facing)) .rotateYDegrees(AngleHelper.horizontalAngle(facing))

View file

@ -47,7 +47,7 @@ public abstract class AbstractPulleyVisual<T extends KineticBlockEntity> extends
rotationAxis = Axis.of(rotatingAbout.step()); rotationAxis = Axis.of(rotatingAbout.step());
coil = getCoilModel().createInstance() coil = getCoilModel().createInstance()
.setPosition(getVisualPosition()); .position(getVisualPosition());
coil.setChanged(); coil.setChanged();
magnet = new SelectInstance<>(this::getMagnetModelIndex); magnet = new SelectInstance<>(this::getMagnetModelIndex);
@ -77,7 +77,7 @@ public abstract class AbstractPulleyVisual<T extends KineticBlockEntity> extends
@Override @Override
public void beginFrame(DynamicVisual.Context ctx) { public void beginFrame(DynamicVisual.Context ctx) {
updateOffset(ctx.partialTick()); updateOffset(ctx.partialTick());
coil.setRotation(rotationAxis.rotationDegrees(offset * 180)) coil.rotation(rotationAxis.rotationDegrees(offset * 180))
.setChanged(); .setChanged();
int neededRopeCount = getNeededRopeCount(); int neededRopeCount = getNeededRopeCount();
@ -88,8 +88,8 @@ public abstract class AbstractPulleyVisual<T extends KineticBlockEntity> extends
.ifPresent(data -> { .ifPresent(data -> {
int i = Math.max(0, Mth.floor(offset)); int i = Math.max(0, Mth.floor(offset));
int light = lightCache.getPackedLight(i); int light = lightCache.getPackedLight(i);
data.setPosition(getVisualPosition()) data.position(getVisualPosition())
.nudgePosition(0, -offset, 0) .translatePosition(0, -offset, 0)
.light(light) .light(light)
.setChanged(); .setChanged();
}); });
@ -101,8 +101,8 @@ public abstract class AbstractPulleyVisual<T extends KineticBlockEntity> extends
float halfRopeNudge = f > .75f ? f - 1 : f; float halfRopeNudge = f > .75f ? f - 1 : f;
int light = lightCache.getPackedLight(0); int light = lightCache.getPackedLight(0);
rope1.setPosition(getVisualPosition()) rope1.position(getVisualPosition())
.nudgePosition(0, -halfRopeNudge, 0) .translatePosition(0, -halfRopeNudge, 0)
.light(light) .light(light)
.setChanged(); .setChanged();
}); });
@ -113,8 +113,8 @@ public abstract class AbstractPulleyVisual<T extends KineticBlockEntity> extends
int light = lightCache.getPackedLight(size - 1 - i); int light = lightCache.getPackedLight(size - 1 - i);
rope.get(i) rope.get(i)
.setPosition(getVisualPosition()) .position(getVisualPosition())
.nudgePosition(0, -offset + i + 1, 0) .translatePosition(0, -offset + i + 1, 0)
.light(light) .light(light)
.setChanged(); .setChanged();
} }

View file

@ -38,6 +38,7 @@ import it.unimi.dsi.fastutil.longs.LongArraySet;
import it.unimi.dsi.fastutil.longs.LongSet; import it.unimi.dsi.fastutil.longs.LongSet;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.core.SectionPos; import net.minecraft.core.SectionPos;
import net.minecraft.core.Vec3i;
import net.minecraft.util.Mth; import net.minecraft.util.Mth;
import net.minecraft.world.level.BlockAndTintGetter; import net.minecraft.world.level.BlockAndTintGetter;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
@ -65,7 +66,7 @@ public class ContraptionVisual<E extends AbstractContraptionEntity> extends Abst
public ContraptionVisual(VisualizationContext ctx, E entity, float partialTick) { public ContraptionVisual(VisualizationContext ctx, E entity, float partialTick) {
super(ctx, entity, partialTick); super(ctx, entity, partialTick);
embedding = ctx.createEmbedding(); embedding = ctx.createEmbedding(Vec3i.ZERO);
init(partialTick); init(partialTick);
} }
@ -258,10 +259,6 @@ public class ContraptionVisual<E extends AbstractContraptionEntity> extends Abst
actors.forEach(ActorVisual::delete); actors.forEach(ActorVisual::delete);
if (model != null) {
model.delete();
}
if (structure != null) { if (structure != null) {
structure.delete(); structure.delete();
} }

View file

@ -18,11 +18,11 @@ import net.minecraft.world.phys.Vec3;
public class ExtendoGripItemRenderer extends CustomRenderedItemModelRenderer { public class ExtendoGripItemRenderer extends CustomRenderedItemModelRenderer {
protected static final PartialModel COG = new PartialModel(Create.asResource("item/extendo_grip/cog")); protected static final PartialModel COG = PartialModel.of(Create.asResource("item/extendo_grip/cog"));
protected static final PartialModel THIN_SHORT = new PartialModel(Create.asResource("item/extendo_grip/thin_short")); protected static final PartialModel THIN_SHORT = PartialModel.of(Create.asResource("item/extendo_grip/thin_short"));
protected static final PartialModel WIDE_SHORT = new PartialModel(Create.asResource("item/extendo_grip/wide_short")); protected static final PartialModel WIDE_SHORT = PartialModel.of(Create.asResource("item/extendo_grip/wide_short"));
protected static final PartialModel THIN_LONG = new PartialModel(Create.asResource("item/extendo_grip/thin_long")); protected static final PartialModel THIN_LONG = PartialModel.of(Create.asResource("item/extendo_grip/thin_long"));
protected static final PartialModel WIDE_LONG = new PartialModel(Create.asResource("item/extendo_grip/wide_long")); protected static final PartialModel WIDE_LONG = PartialModel.of(Create.asResource("item/extendo_grip/wide_long"));
private static final Vec3 ROTATION_OFFSET = new Vec3(0, 1 / 2f, 1 / 2f); private static final Vec3 ROTATION_OFFSET = new Vec3(0, 1 / 2f, 1 / 2f);
private static final Vec3 COG_ROTATION_OFFSET = new Vec3(0, 1 / 16f, 0); private static final Vec3 COG_ROTATION_OFFSET = new Vec3(0, 1 / 16f, 0);

View file

@ -23,7 +23,7 @@ import net.minecraft.world.item.ItemStack;
public class PotatoCannonItemRenderer extends CustomRenderedItemModelRenderer { public class PotatoCannonItemRenderer extends CustomRenderedItemModelRenderer {
protected static final PartialModel COG = new PartialModel(Create.asResource("item/potato_cannon/cog")); protected static final PartialModel COG = PartialModel.of(Create.asResource("item/potato_cannon/cog"));
@Override @Override
protected void render(ItemStack stack, CustomRenderedItemModel model, PartialItemModelRenderer renderer, protected void render(ItemStack stack, CustomRenderedItemModel model, PartialItemModelRenderer renderer,

View file

@ -17,9 +17,9 @@ import net.minecraft.world.item.ItemStack;
public class SymmetryWandItemRenderer extends CustomRenderedItemModelRenderer { public class SymmetryWandItemRenderer extends CustomRenderedItemModelRenderer {
protected static final PartialModel BITS = new PartialModel(Create.asResource("item/wand_of_symmetry/bits")); protected static final PartialModel BITS = PartialModel.of(Create.asResource("item/wand_of_symmetry/bits"));
protected static final PartialModel CORE = new PartialModel(Create.asResource("item/wand_of_symmetry/core")); protected static final PartialModel CORE = PartialModel.of(Create.asResource("item/wand_of_symmetry/core"));
protected static final PartialModel CORE_GLOW = new PartialModel(Create.asResource("item/wand_of_symmetry/core_glow")); protected static final PartialModel CORE_GLOW = PartialModel.of(Create.asResource("item/wand_of_symmetry/core_glow"));
@Override @Override
protected void render(ItemStack stack, CustomRenderedItemModel model, PartialItemModelRenderer renderer, ItemDisplayContext transformType, protected void render(ItemStack stack, CustomRenderedItemModel model, PartialItemModelRenderer renderer, ItemDisplayContext transformType,

View file

@ -51,7 +51,7 @@ public class ToolBoxVisual extends AbstractBlockEntityVisual<ToolboxBlockEntity>
float lidAngle = blockEntity.lid.getValue(partialTicks); float lidAngle = blockEntity.lid.getValue(partialTicks);
float drawerOffset = blockEntity.drawers.getValue(partialTicks); float drawerOffset = blockEntity.drawers.getValue(partialTicks);
lid.loadIdentity() lid.setIdentityTransform()
.translate(getVisualPosition()) .translate(getVisualPosition())
.center() .center()
.rotateYDegrees(-facing.toYRot()) .rotateYDegrees(-facing.toYRot())
@ -62,7 +62,7 @@ public class ToolBoxVisual extends AbstractBlockEntityVisual<ToolboxBlockEntity>
.setChanged(); .setChanged();
for (int offset : Iterate.zeroAndOne) { for (int offset : Iterate.zeroAndOne) {
drawers[offset].loadIdentity() drawers[offset].setIdentityTransform()
.translate(getVisualPosition()) .translate(getVisualPosition())
.center() .center()
.rotateYDegrees(-facing.toYRot()) .rotateYDegrees(-facing.toYRot())

View file

@ -16,7 +16,7 @@ import net.minecraft.world.item.ItemStack;
public class WrenchItemRenderer extends CustomRenderedItemModelRenderer { public class WrenchItemRenderer extends CustomRenderedItemModelRenderer {
protected static final PartialModel GEAR = new PartialModel(Create.asResource("item/wrench/gear")); protected static final PartialModel GEAR = PartialModel.of(Create.asResource("item/wrench/gear"));
@Override @Override
protected void render(ItemStack stack, CustomRenderedItemModel model, PartialItemModelRenderer renderer, ItemDisplayContext transformType, protected void render(ItemStack stack, CustomRenderedItemModel model, PartialItemModelRenderer renderer, ItemDisplayContext transformType,

View file

@ -22,9 +22,9 @@ import net.minecraft.world.item.ItemStack;
public class WorldshaperItemRenderer extends ZapperItemRenderer { public class WorldshaperItemRenderer extends ZapperItemRenderer {
protected static final PartialModel CORE = new PartialModel(Create.asResource("item/handheld_worldshaper/core")); protected static final PartialModel CORE = PartialModel.of(Create.asResource("item/handheld_worldshaper/core"));
protected static final PartialModel CORE_GLOW = new PartialModel(Create.asResource("item/handheld_worldshaper/core_glow")); protected static final PartialModel CORE_GLOW = PartialModel.of(Create.asResource("item/handheld_worldshaper/core_glow"));
protected static final PartialModel ACCELERATOR = new PartialModel(Create.asResource("item/handheld_worldshaper/accelerator")); protected static final PartialModel ACCELERATOR = PartialModel.of(Create.asResource("item/handheld_worldshaper/accelerator"));
@Override @Override
protected void render(ItemStack stack, CustomRenderedItemModel model, PartialItemModelRenderer renderer, ItemDisplayContext transformType, protected void render(ItemStack stack, CustomRenderedItemModel model, PartialItemModelRenderer renderer, ItemDisplayContext transformType,

View file

@ -59,7 +59,7 @@ public class FluidValveVisual extends ShaftVisual<FluidValveBlockEntity> impleme
float pointerRotation = Mth.lerp(value, 0, -90); float pointerRotation = Mth.lerp(value, 0, -90);
settled = (value == 0 || value == 1) && blockEntity.pointer.settled(); settled = (value == 0 || value == 1) && blockEntity.pointer.settled();
pointer.loadIdentity() pointer.setIdentityTransform()
.translate(getVisualPosition()) .translate(getVisualPosition())
.center() .center()
.rotateYDegrees((float) yRot) .rotateYDegrees((float) yRot)

View file

@ -27,7 +27,7 @@ import com.simibubi.create.foundation.sound.SoundScapes.AmbienceGroup;
import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.Lang;
import com.simibubi.create.infrastructure.config.AllConfigs; import com.simibubi.create.infrastructure.config.AllConfigs;
import dev.engine_room.flywheel.api.visualization.VisualizationManager; import dev.engine_room.flywheel.lib.visualization.VisualizationHelper;
import net.minecraft.ChatFormatting; import net.minecraft.ChatFormatting;
import net.minecraft.client.resources.language.I18n; import net.minecraft.client.resources.language.I18n;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
@ -265,7 +265,7 @@ public class KineticBlockEntity extends SmartBlockEntity implements IHaveGoggleI
effects.triggerOverStressedEffect(); effects.triggerOverStressedEffect();
if (clientPacket) if (clientPacket)
DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> VisualizationManager.queueUpdate(this)); DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> VisualizationHelper.queueUpdate(this));
} }
public float getGeneratedSpeed() { public float getGeneratedSpeed() {
@ -578,7 +578,7 @@ public class KineticBlockEntity extends SmartBlockEntity implements IHaveGoggleI
public void requestModelDataUpdate() { public void requestModelDataUpdate() {
super.requestModelDataUpdate(); super.requestModelDataUpdate();
if (!this.remove) if (!this.remove)
DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> VisualizationManager.queueUpdate(this)); DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> VisualizationHelper.queueUpdate(this));
} }
@OnlyIn(Dist.CLIENT) @OnlyIn(Dist.CLIENT)

View file

@ -48,7 +48,7 @@ public class HandCrankVisual extends KineticBlockEntityVisual<HandCrankBlockEnti
Direction.Axis axis = facing.getAxis(); Direction.Axis axis = facing.getAxis();
float angle = blockEntity.getIndependentAngle(pt); float angle = blockEntity.getIndependentAngle(pt);
crank.loadIdentity() crank.setIdentityTransform()
.translate(getVisualPosition()) .translate(getVisualPosition())
.center() .center()
.rotate(angle, Direction.get(Direction.AxisDirection.POSITIVE, axis)) .rotate(angle, Direction.get(Direction.AxisDirection.POSITIVE, axis))

View file

@ -121,8 +121,8 @@ public class DeployerVisual extends ShaftVisual<DeployerBlockEntity> implements
float y = blockPos.getY() + ((float) facingVec.getY()) * distance; float y = blockPos.getY() + ((float) facingVec.getY()) * distance;
float z = blockPos.getZ() + ((float) facingVec.getZ()) * distance; float z = blockPos.getZ() + ((float) facingVec.getZ()) * distance;
pole.setPosition(x, y, z).setChanged(); pole.position(x, y, z).setChanged();
hand.setPosition(x, y, z).setChanged(); hand.position(x, y, z).setChanged();
} }
static void updateRotation(OrientedInstance pole, OrientedInstance hand, float yRot, float xRot, float zRot) { static void updateRotation(OrientedInstance pole, OrientedInstance hand, float yRot, float xRot, float zRot) {
@ -130,12 +130,12 @@ public class DeployerVisual extends ShaftVisual<DeployerBlockEntity> implements
Quaternionf q = Axis.YP.rotationDegrees(yRot); Quaternionf q = Axis.YP.rotationDegrees(yRot);
q.mul(Axis.XP.rotationDegrees(xRot)); q.mul(Axis.XP.rotationDegrees(xRot));
hand.setRotation(q) hand.rotation(q)
.setChanged(); .setChanged();
q.mul(Axis.ZP.rotationDegrees(zRot)); q.mul(Axis.ZP.rotationDegrees(zRot));
pole.setRotation(q) pole.rotation(q)
.setChanged(); .setChanged();
} }

View file

@ -25,7 +25,7 @@ import com.simibubi.create.foundation.utility.VecHelper;
import com.simibubi.create.foundation.utility.animation.LerpedFloat; import com.simibubi.create.foundation.utility.animation.LerpedFloat;
import com.simibubi.create.infrastructure.config.AllConfigs; import com.simibubi.create.infrastructure.config.AllConfigs;
import dev.engine_room.flywheel.api.visualization.VisualizationManager; import dev.engine_room.flywheel.lib.visualization.VisualizationHelper;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction; import net.minecraft.core.Direction;
import net.minecraft.core.SectionPos; import net.minecraft.core.SectionPos;
@ -552,7 +552,7 @@ public class ArmBlockEntity extends KineticBlockEntity implements ITransformable
return; return;
if (hadGoggles != goggles) if (hadGoggles != goggles)
DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> VisualizationManager.queueUpdate(this)); DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> VisualizationHelper.queueUpdate(this));
boolean ceiling = isOnCeiling(); boolean ceiling = isOnCeiling();
if (interactionPointTagBefore == null || interactionPointTagBefore.size() != interactionPointTag.size()) if (interactionPointTagBefore == null || interactionPointTagBefore.size() != interactionPointTag.size())

View file

@ -132,12 +132,12 @@ public class ArmVisual extends SingleRotatingVisual<ArmBlockEntity> implements S
ArmRenderer.transformLowerArm(msr, lowerArmAngle); ArmRenderer.transformLowerArm(msr, lowerArmAngle);
lowerBody.setTransform(msLocal) lowerBody.setTransform(msLocal)
.color(color) .colorRgb(color)
.setChanged(); .setChanged();
ArmRenderer.transformUpperArm(msr, upperArmAngle); ArmRenderer.transformUpperArm(msr, upperArmAngle);
upperBody.setTransform(msLocal) upperBody.setTransform(msLocal)
.color(color) .colorRgb(color)
.setChanged(); .setChanged();
ArmRenderer.transformHead(msr, headAngle); ArmRenderer.transformHead(msr, headAngle);

View file

@ -65,8 +65,8 @@ public class MixerVisual extends EncasedCogVisual implements SimpleDynamicVisual
} }
private void transformPole(float renderedHeadOffset) { private void transformPole(float renderedHeadOffset) {
mixerPole.setPosition(getVisualPosition()) mixerPole.position(getVisualPosition())
.nudgePosition(0, -renderedHeadOffset, 0) .translatePosition(0, -renderedHeadOffset, 0)
.setChanged(); .setChanged();
} }

View file

@ -30,7 +30,7 @@ public class PressVisual extends ShaftVisual<MechanicalPressBlockEntity> impleme
Quaternionf q = Axis.YP Quaternionf q = Axis.YP
.rotationDegrees(AngleHelper.horizontalAngle(blockState.getValue(MechanicalPressBlock.HORIZONTAL_FACING))); .rotationDegrees(AngleHelper.horizontalAngle(blockState.getValue(MechanicalPressBlock.HORIZONTAL_FACING)));
pressHead.setRotation(q); pressHead.rotation(q);
transformModels(partialTick); transformModels(partialTick);
} }
@ -43,8 +43,8 @@ public class PressVisual extends ShaftVisual<MechanicalPressBlockEntity> impleme
private void transformModels(float pt) { private void transformModels(float pt) {
float renderedHeadOffset = getRenderedHeadOffset(pt); float renderedHeadOffset = getRenderedHeadOffset(pt);
pressHead.setPosition(getVisualPosition()) pressHead.position(getVisualPosition())
.nudgePosition(0, -renderedHeadOffset, 0) .translatePosition(0, -renderedHeadOffset, 0)
.setChanged(); .setChanged();
} }

View file

@ -39,9 +39,9 @@ public class SteamEngineVisual extends AbstractBlockEntityVisual<SteamEngineBloc
public void beginFrame(DynamicVisual.Context ctx) { public void beginFrame(DynamicVisual.Context ctx) {
Float angle = blockEntity.getTargetAngle(); Float angle = blockEntity.getTargetAngle();
if (angle == null) { if (angle == null) {
piston.setEmptyTransform().setChanged(); piston.setZeroTransform().setChanged();
linkage.setEmptyTransform().setChanged(); linkage.setZeroTransform().setChanged();
connector.setEmptyTransform().setChanged(); connector.setZeroTransform().setChanged();
return; return;
} }
@ -81,7 +81,7 @@ public class SteamEngineVisual extends AbstractBlockEntityVisual<SteamEngineBloc
} }
protected TransformedInstance transformed(TransformedInstance modelData, Direction facing, boolean roll90) { protected TransformedInstance transformed(TransformedInstance modelData, Direction facing, boolean roll90) {
return modelData.loadIdentity() return modelData.setIdentityTransform()
.translate(getVisualPosition()) .translate(getVisualPosition())
.center() .center()
.rotateYDegrees(AngleHelper.horizontalAngle(facing)) .rotateYDegrees(AngleHelper.horizontalAngle(facing))

View file

@ -58,7 +58,7 @@ public class EjectorVisual extends ShaftVisual<EjectorBlockEntity> implements Si
private void pivotPlate(float lidProgress) { private void pivotPlate(float lidProgress) {
float angle = lidProgress * 70; float angle = lidProgress * 70;
EjectorRenderer.applyLidAngle(blockEntity, angle, plate.loadIdentity().translate(getVisualPosition())); EjectorRenderer.applyLidAngle(blockEntity, angle, plate.setIdentityTransform().translate(getVisualPosition()));
plate.setChanged(); plate.setChanged();
} }

View file

@ -27,7 +27,7 @@ import com.simibubi.create.foundation.utility.animation.LerpedFloat;
import com.simibubi.create.foundation.utility.animation.LerpedFloat.Chaser; import com.simibubi.create.foundation.utility.animation.LerpedFloat.Chaser;
import com.simibubi.create.infrastructure.config.AllConfigs; import com.simibubi.create.infrastructure.config.AllConfigs;
import dev.engine_room.flywheel.api.visualization.VisualizationManager; import dev.engine_room.flywheel.lib.visualization.VisualizationHelper;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction; import net.minecraft.core.Direction;
import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.CompoundTag;
@ -363,7 +363,7 @@ public class FunnelBlockEntity extends SmartBlockEntity implements IHaveHovering
extractionCooldown = compound.getInt("TransferCooldown"); extractionCooldown = compound.getInt("TransferCooldown");
if (clientPacket) if (clientPacket)
DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> VisualizationManager.queueUpdate(this)); DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> VisualizationHelper.queueUpdate(this));
} }
public void onTransfer(ItemStack stack) { public void onTransfer(ItemStack stack) {

View file

@ -19,7 +19,7 @@ import com.simibubi.create.foundation.utility.Iterate;
import com.simibubi.create.foundation.utility.animation.LerpedFloat; import com.simibubi.create.foundation.utility.animation.LerpedFloat;
import com.simibubi.create.foundation.utility.animation.LerpedFloat.Chaser; import com.simibubi.create.foundation.utility.animation.LerpedFloat.Chaser;
import dev.engine_room.flywheel.api.visualization.VisualizationManager; import dev.engine_room.flywheel.lib.visualization.VisualizationHelper;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction; import net.minecraft.core.Direction;
import net.minecraft.core.Direction.Axis; import net.minecraft.core.Direction.Axis;
@ -109,7 +109,7 @@ public class BeltTunnelBlockEntity extends SmartBlockEntity {
sides.addAll(flaps.keySet()); sides.addAll(flaps.keySet());
super.read(compound, clientPacket); super.read(compound, clientPacket);
if (clientPacket) if (clientPacket)
DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> VisualizationManager.queueUpdate(this)); DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> VisualizationHelper.queueUpdate(this));
} }
private LerpedFloat createChasingFlap() { private LerpedFloat createChasingFlap() {

View file

@ -137,7 +137,7 @@ public class BlazeBurnerVisual extends AbstractBlockEntityVisual<BlazeBurnerBloc
float horizontalAngle = AngleHelper.rad(blockEntity.headAngle.getValue(ctx.partialTick())); float horizontalAngle = AngleHelper.rad(blockEntity.headAngle.getValue(ctx.partialTick()));
head.loadIdentity() head.setIdentityTransform()
.translate(getVisualPosition()) .translate(getVisualPosition())
.translateY(headY) .translateY(headY)
.translate(Translate.CENTER) .translate(Translate.CENTER)
@ -146,7 +146,7 @@ public class BlazeBurnerVisual extends AbstractBlockEntityVisual<BlazeBurnerBloc
.setChanged(); .setChanged();
if (goggles != null) { if (goggles != null) {
goggles.loadIdentity() goggles.setIdentityTransform()
.translate(getVisualPosition()) .translate(getVisualPosition())
.translateY(headY + 8 / 16f) .translateY(headY + 8 / 16f)
.translate(Translate.CENTER) .translate(Translate.CENTER)
@ -156,7 +156,7 @@ public class BlazeBurnerVisual extends AbstractBlockEntityVisual<BlazeBurnerBloc
} }
if (hat != null) { if (hat != null) {
hat.loadIdentity() hat.setIdentityTransform()
.translate(getVisualPosition()) .translate(getVisualPosition())
.translateY(headY); .translateY(headY);
if (isInert) { if (isInert) {
@ -177,7 +177,7 @@ public class BlazeBurnerVisual extends AbstractBlockEntityVisual<BlazeBurnerBloc
if (smallRods != null) { if (smallRods != null) {
float offset1 = Mth.sin((float) ((renderTick / 16f + Math.PI) % (2 * Math.PI))) / offsetMult; float offset1 = Mth.sin((float) ((renderTick / 16f + Math.PI) % (2 * Math.PI))) / offsetMult;
smallRods.loadIdentity() smallRods.setIdentityTransform()
.translate(getVisualPosition()) .translate(getVisualPosition())
.translateY(offset1 + animation + .125f) .translateY(offset1 + animation + .125f)
.setChanged(); .setChanged();
@ -186,7 +186,7 @@ public class BlazeBurnerVisual extends AbstractBlockEntityVisual<BlazeBurnerBloc
if (largeRods != null) { if (largeRods != null) {
float offset2 = Mth.sin((float) ((renderTick / 16f + Math.PI / 2) % (2 * Math.PI))) / offsetMult; float offset2 = Mth.sin((float) ((renderTick / 16f + Math.PI / 2) % (2 * Math.PI))) / offsetMult;
largeRods.loadIdentity() largeRods.setIdentityTransform()
.translate(getVisualPosition()) .translate(getVisualPosition())
.translateY(offset2 + animation - 3 / 16f) .translateY(offset2 + animation - 3 / 16f)
.setChanged(); .setChanged();

View file

@ -39,7 +39,7 @@ public class AnalogLeverVisual extends AbstractBlockEntityVisual<AnalogLeverBloc
rX = face == AttachFace.FLOOR ? 0 : face == AttachFace.WALL ? 90 : 180; rX = face == AttachFace.FLOOR ? 0 : face == AttachFace.WALL ? 90 : 180;
rY = AngleHelper.horizontalAngle(blockState.getValue(AnalogLeverBlock.FACING)); rY = AngleHelper.horizontalAngle(blockState.getValue(AnalogLeverBlock.FACING));
transform(indicator.loadIdentity()); transform(indicator.setIdentityTransform());
animateLever(partialTick); animateLever(partialTick);
} }
@ -53,12 +53,12 @@ public class AnalogLeverVisual extends AbstractBlockEntityVisual<AnalogLeverBloc
protected void animateLever(float pt) { protected void animateLever(float pt) {
float state = blockEntity.clientState.getValue(pt); float state = blockEntity.clientState.getValue(pt);
indicator.color(Color.mixColors(0x2C0300, 0xCD0000, state / 15f)); indicator.colorRgb(Color.mixColors(0x2C0300, 0xCD0000, state / 15f));
indicator.setChanged(); indicator.setChanged();
float angle = (float) ((state / 15) * 90 / 180 * Math.PI); float angle = (float) ((state / 15) * 90 / 180 * Math.PI);
transform(handle.loadIdentity()).translate(1 / 2f, 1 / 16f, 1 / 2f) transform(handle.setIdentityTransform()).translate(1 / 2f, 1 / 16f, 1 / 2f)
.rotate(angle, Direction.EAST) .rotate(angle, Direction.EAST)
.translate(-1 / 2f, -1 / 16f, -1 / 2f) .translate(-1 / 2f, -1 / 16f, -1 / 2f)
.setChanged(); .setChanged();

View file

@ -25,9 +25,9 @@ public class BrassDiodeVisual extends AbstractBlockEntityVisual<BrassDiodeBlockE
indicator = instancerProvider.instancer(InstanceTypes.TRANSFORMED, Models.partial(AllPartialModels.FLEXPEATER_INDICATOR)).createInstance(); indicator = instancerProvider.instancer(InstanceTypes.TRANSFORMED, Models.partial(AllPartialModels.FLEXPEATER_INDICATOR)).createInstance();
indicator.loadIdentity() indicator.setIdentityTransform()
.translate(getVisualPosition()) .translate(getVisualPosition())
.color(getColor()) .colorRgb(getColor())
.setChanged(); .setChanged();
previousState = blockEntity.state; previousState = blockEntity.state;
@ -37,7 +37,7 @@ public class BrassDiodeVisual extends AbstractBlockEntityVisual<BrassDiodeBlockE
public void tick(TickableVisual.Context context) { public void tick(TickableVisual.Context context) {
if (previousState == blockEntity.state) return; if (previousState == blockEntity.state) return;
indicator.color(getColor()); indicator.colorRgb(getColor());
indicator.setChanged(); indicator.setChanged();
previousState = blockEntity.state; previousState = blockEntity.state;

View file

@ -25,8 +25,8 @@ import net.minecraft.world.item.ItemStack;
public class LinkedControllerItemRenderer extends CustomRenderedItemModelRenderer { public class LinkedControllerItemRenderer extends CustomRenderedItemModelRenderer {
protected static final PartialModel POWERED = new PartialModel(Create.asResource("item/linked_controller/powered")); protected static final PartialModel POWERED = PartialModel.of(Create.asResource("item/linked_controller/powered"));
protected static final PartialModel BUTTON = new PartialModel(Create.asResource("item/linked_controller/button")); protected static final PartialModel BUTTON = PartialModel.of(Create.asResource("item/linked_controller/button"));
static LerpedFloat equipProgress; static LerpedFloat equipProgress;
static Vector<LerpedFloat> buttons; static Vector<LerpedFloat> buttons;

View file

@ -7,9 +7,9 @@ import java.util.Map;
import java.util.stream.IntStream; import java.util.stream.IntStream;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import org.joml.Matrix3f; import org.joml.Matrix3fc;
import org.joml.Matrix4f; import org.joml.Matrix4fc;
import org.joml.Quaternionf; import org.joml.Quaternionfc;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.VertexConsumer; import com.mojang.blaze3d.vertex.VertexConsumer;
@ -304,7 +304,7 @@ public abstract class BogeyRenderer {
*/ */
private String keyFromModel(PartialModel partialModel) { private String keyFromModel(PartialModel partialModel) {
return partialModel.getLocation().toString(); return partialModel.modelLocation().toString();
} }
/** /**
@ -348,7 +348,7 @@ public abstract class BogeyRenderer {
public BogeyModelData setEmptyTransform() { public BogeyModelData setEmptyTransform() {
if (this.transform instanceof TransformedInstance model) if (this.transform instanceof TransformedInstance model)
model.setEmptyTransform() model.setZeroTransform()
.setChanged(); .setChanged();
return this; return this;
} }
@ -367,19 +367,19 @@ public abstract class BogeyRenderer {
} }
@Override @Override
public BogeyModelData mulPose(Matrix4f pose) { public BogeyModelData mulPose(Matrix4fc pose) {
this.transform.mulPose(pose); this.transform.mulPose(pose);
return this; return this;
} }
@Override @Override
public BogeyModelData mulNormal(Matrix3f normal) { public BogeyModelData mulNormal(Matrix3fc normal) {
this.transform.mulNormal(normal); this.transform.mulNormal(normal);
return this; return this;
} }
@Override @Override
public BogeyModelData rotate(Quaternionf quaternion) { public BogeyModelData rotate(Quaternionfc quaternion) {
this.transform.rotate(quaternion); this.transform.rotate(quaternion);
return this; return this;
} }
@ -391,7 +391,7 @@ public abstract class BogeyRenderer {
} }
@Override @Override
public BogeyModelData translate(double x, double y, double z) { public BogeyModelData translate(float x, float y, float z) {
this.transform.translate(x, y, z); this.transform.translate(x, y, z);
return this; return this;
} }

View file

@ -22,7 +22,7 @@ import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour
import com.simibubi.create.foundation.utility.Pair; import com.simibubi.create.foundation.utility.Pair;
import com.simibubi.create.foundation.utility.VecHelper; import com.simibubi.create.foundation.utility.VecHelper;
import dev.engine_room.flywheel.api.visualization.VisualizationManager; import dev.engine_room.flywheel.lib.visualization.VisualizationHelper;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction.Axis; import net.minecraft.core.Direction.Axis;
import net.minecraft.core.registries.Registries; import net.minecraft.core.registries.Registries;
@ -225,7 +225,7 @@ public class TrackBlockEntity extends SmartBlockEntity implements ITransformable
level.sendBlockUpdated(worldPosition, getBlockState(), getBlockState(), 16); level.sendBlockUpdated(worldPosition, getBlockState(), getBlockState(), 16);
} }
DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> VisualizationManager.queueUpdate(this)); DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> VisualizationHelper.queueUpdate(this));
if (hasInteractableConnections()) if (hasInteractableConnections())
registerToCurveInteraction(); registerToCurveInteraction();

View file

@ -100,9 +100,9 @@ public class TrackMaterialFactory {
DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> { DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> {
String namespace = id.getNamespace(); String namespace = id.getNamespace();
String prefix = "block/track/" + id.getPath() + "/"; String prefix = "block/track/" + id.getPath() + "/";
tieModel = new PartialModel(new ResourceLocation(namespace, prefix + "tie")); tieModel = PartialModel.of(new ResourceLocation(namespace, prefix + "tie"));
leftSegmentModel = new PartialModel(new ResourceLocation(namespace, prefix + "segment_left")); leftSegmentModel = PartialModel.of(new ResourceLocation(namespace, prefix + "segment_left"));
rightSegmentModel = new PartialModel(new ResourceLocation(namespace, prefix + "segment_right")); rightSegmentModel = PartialModel.of(new ResourceLocation(namespace, prefix + "segment_right"));
}); });
return this; return this;
} }

View file

@ -13,7 +13,7 @@ import com.tterrag.registrate.builders.BuilderCallback;
import com.tterrag.registrate.util.OneTimeEventReceiver; import com.tterrag.registrate.util.OneTimeEventReceiver;
import com.tterrag.registrate.util.nullness.NonNullSupplier; import com.tterrag.registrate.util.nullness.NonNullSupplier;
import dev.engine_room.flywheel.lib.visual.SimpleBlockEntityVisualizer; import dev.engine_room.flywheel.lib.visualization.SimpleBlockEntityVisualizer;
import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.entity.BlockEntityType;

View file

@ -10,7 +10,7 @@ import com.tterrag.registrate.builders.EntityBuilder;
import com.tterrag.registrate.util.OneTimeEventReceiver; import com.tterrag.registrate.util.OneTimeEventReceiver;
import com.tterrag.registrate.util.nullness.NonNullSupplier; import com.tterrag.registrate.util.nullness.NonNullSupplier;
import dev.engine_room.flywheel.lib.visual.SimpleEntityVisualizer; import dev.engine_room.flywheel.lib.visualization.SimpleEntityVisualizer;
import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.MobCategory; import net.minecraft.world.entity.MobCategory;

View file

@ -34,10 +34,10 @@ public class AllInstanceTypes {
.vector("axis", FloatRepr.NORMALIZED_BYTE, 3) .vector("axis", FloatRepr.NORMALIZED_BYTE, 3)
.build()) .build())
.writer((ptr, instance) -> { .writer((ptr, instance) -> {
MemoryUtil.memPutByte(ptr, instance.r); MemoryUtil.memPutByte(ptr, instance.red);
MemoryUtil.memPutByte(ptr + 1, instance.g); MemoryUtil.memPutByte(ptr + 1, instance.green);
MemoryUtil.memPutByte(ptr + 2, instance.b); MemoryUtil.memPutByte(ptr + 2, instance.blue);
MemoryUtil.memPutByte(ptr + 3, instance.a); MemoryUtil.memPutByte(ptr + 3, instance.alpha);
ExtraMemoryOps.put2x16(ptr + 4, instance.light); ExtraMemoryOps.put2x16(ptr + 4, instance.light);
ExtraMemoryOps.put2x16(ptr + 8, instance.overlay); ExtraMemoryOps.put2x16(ptr + 8, instance.overlay);
MemoryUtil.memPutFloat(ptr + 12, instance.x); MemoryUtil.memPutFloat(ptr + 12, instance.x);
@ -67,10 +67,10 @@ public class AllInstanceTypes {
.scalar("scrollMult", FloatRepr.FLOAT) .scalar("scrollMult", FloatRepr.FLOAT)
.build()) .build())
.writer((ptr, instance) -> { .writer((ptr, instance) -> {
MemoryUtil.memPutByte(ptr, instance.r); MemoryUtil.memPutByte(ptr, instance.red);
MemoryUtil.memPutByte(ptr + 1, instance.g); MemoryUtil.memPutByte(ptr + 1, instance.green);
MemoryUtil.memPutByte(ptr + 2, instance.b); MemoryUtil.memPutByte(ptr + 2, instance.blue);
MemoryUtil.memPutByte(ptr + 3, instance.a); MemoryUtil.memPutByte(ptr + 3, instance.alpha);
ExtraMemoryOps.put2x16(ptr + 4, instance.light); ExtraMemoryOps.put2x16(ptr + 4, instance.light);
ExtraMemoryOps.put2x16(ptr + 8, instance.overlay); ExtraMemoryOps.put2x16(ptr + 8, instance.overlay);
MemoryUtil.memPutFloat(ptr + 12, instance.x); MemoryUtil.memPutFloat(ptr + 12, instance.x);
@ -104,10 +104,10 @@ public class AllInstanceTypes {
.vector("scale", FloatRepr.FLOAT, 2) .vector("scale", FloatRepr.FLOAT, 2)
.build()) .build())
.writer((ptr, instance) -> { .writer((ptr, instance) -> {
MemoryUtil.memPutByte(ptr, instance.r); MemoryUtil.memPutByte(ptr, instance.red);
MemoryUtil.memPutByte(ptr + 1, instance.g); MemoryUtil.memPutByte(ptr + 1, instance.green);
MemoryUtil.memPutByte(ptr + 2, instance.b); MemoryUtil.memPutByte(ptr + 2, instance.blue);
MemoryUtil.memPutByte(ptr + 3, instance.a); MemoryUtil.memPutByte(ptr + 3, instance.alpha);
ExtraMemoryOps.put2x16(ptr + 4, instance.light); ExtraMemoryOps.put2x16(ptr + 4, instance.light);
ExtraMemoryOps.put2x16(ptr + 8, instance.overlay); ExtraMemoryOps.put2x16(ptr + 8, instance.overlay);
MemoryUtil.memPutFloat(ptr + 12, instance.x); MemoryUtil.memPutFloat(ptr + 12, instance.x);

View file

@ -16,7 +16,7 @@ import com.simibubi.create.infrastructure.config.AllConfigs;
import dev.engine_room.flywheel.api.visualization.VisualizationManager; import dev.engine_room.flywheel.api.visualization.VisualizationManager;
import dev.engine_room.flywheel.lib.transform.TransformStack; import dev.engine_room.flywheel.lib.transform.TransformStack;
import dev.engine_room.flywheel.lib.visual.VisualizationHelper; import dev.engine_room.flywheel.lib.visualization.VisualizationHelper;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.LevelRenderer; import net.minecraft.client.renderer.LevelRenderer;
import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.MultiBufferSource;
@ -50,7 +50,7 @@ public class BlockEntityRenderHelper {
Iterator<BlockEntity> iterator = customRenderBEs.iterator(); Iterator<BlockEntity> iterator = customRenderBEs.iterator();
while (iterator.hasNext()) { while (iterator.hasNext()) {
BlockEntity blockEntity = iterator.next(); BlockEntity blockEntity = iterator.next();
if (VisualizationManager.supportsVisualization(world) && VisualizationHelper.shouldSkipRender(blockEntity)) if (VisualizationManager.supportsVisualization(world) && VisualizationHelper.skipVanillaRender(blockEntity))
continue; continue;
BlockEntityRenderer<BlockEntity> renderer = Minecraft.getInstance().getBlockEntityRenderDispatcher().getRenderer(blockEntity); BlockEntityRenderer<BlockEntity> renderer = Minecraft.getInstance().getBlockEntityRenderDispatcher().getRenderer(blockEntity);

View file

@ -2,8 +2,10 @@ package com.simibubi.create.foundation.render;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import org.joml.Matrix3f; import org.joml.Matrix3f;
import org.joml.Matrix3fc;
import org.joml.Matrix4f; import org.joml.Matrix4f;
import org.joml.Quaternionf; import org.joml.Matrix4fc;
import org.joml.Quaternionfc;
import org.joml.Vector3f; import org.joml.Vector3f;
import org.joml.Vector3fc; import org.joml.Vector3fc;
import org.joml.Vector4f; import org.joml.Vector4f;
@ -220,19 +222,21 @@ public class SuperByteBuffer implements TransformStack<SuperByteBuffer> {
} }
@Override @Override
public SuperByteBuffer rotate(Quaternionf quaternion) { public SuperByteBuffer rotate(Quaternionfc quaternion) {
transforms.mulPose(quaternion); var last = transforms.last();
last.pose().rotate(quaternion);
last.normal().rotate(quaternion);
return this; return this;
} }
@Override @Override
public SuperByteBuffer translate(double x, double y, double z) { public SuperByteBuffer translate(float x, float y, float z) {
transforms.translate(x, y, z); transforms.translate(x, y, z);
return this; return this;
} }
@Override @Override
public SuperByteBuffer mulPose(Matrix4f pose) { public SuperByteBuffer mulPose(Matrix4fc pose) {
transforms.last() transforms.last()
.pose() .pose()
.mul(pose); .mul(pose);
@ -240,7 +244,7 @@ public class SuperByteBuffer implements TransformStack<SuperByteBuffer> {
} }
@Override @Override
public SuperByteBuffer mulNormal(Matrix3f normal) { public SuperByteBuffer mulNormal(Matrix3fc normal) {
transforms.last() transforms.last()
.normal() .normal()
.mul(normal); .mul(normal);

View file

@ -80,7 +80,7 @@ public class DebugInformation {
.getVersion() .getVersion()
.toString()) .toString())
.orElse("None")) .orElse("None"))
.put("Flywheel Backend", () -> Backend.REGISTRY.getIdOrThrow(BackendManager.getBackend()).toString()) .put("Flywheel Backend", () -> Backend.REGISTRY.getIdOrThrow(BackendManager.currentBackend()).toString())
.put("OpenGL Renderer", GlUtil::getRenderer) .put("OpenGL Renderer", GlUtil::getRenderer)
.put("OpenGL Version", GlUtil::getOpenGLVersion) .put("OpenGL Version", GlUtil::getOpenGLVersion)
.put("Graphics Mode", () -> Minecraft.getInstance().options.graphicsMode().toString()) .put("Graphics Mode", () -> Minecraft.getInstance().options.graphicsMode().toString())