Wait it's all Flywheel? Always has been.

- add flywheel as a dependency to catnip
This commit is contained in:
zelophed 2023-08-13 23:39:10 +02:00
parent f6c6942d14
commit 9098002c17
87 changed files with 239 additions and 986 deletions

View file

@ -26,16 +26,14 @@ import com.simibubi.create.content.trains.track.TrackPlacementOverlay;
import com.simibubi.create.foundation.ClientResourceReloadListener; import com.simibubi.create.foundation.ClientResourceReloadListener;
import com.simibubi.create.foundation.blockEntity.behaviour.ValueSettingsClient; import com.simibubi.create.foundation.blockEntity.behaviour.ValueSettingsClient;
import com.simibubi.create.foundation.ponder.CreatePonderPlugin; import com.simibubi.create.foundation.ponder.CreatePonderPlugin;
import com.simibubi.create.foundation.render.CachedPartialBuffers;
import com.simibubi.create.foundation.render.CreateContexts; import com.simibubi.create.foundation.render.CreateContexts;
import com.simibubi.create.foundation.render.FlwSuperBufferFactory;
import com.simibubi.create.foundation.utility.ModelSwapper; import com.simibubi.create.foundation.utility.ModelSwapper;
import com.simibubi.create.infrastructure.config.AllConfigs; import com.simibubi.create.infrastructure.config.AllConfigs;
import com.simibubi.create.infrastructure.gui.CreateMainMenuScreen; import com.simibubi.create.infrastructure.gui.CreateMainMenuScreen;
import net.createmod.catnip.config.ui.BaseConfigScreen; import net.createmod.catnip.config.ui.BaseConfigScreen;
import net.createmod.catnip.config.ui.ConfigScreen; import net.createmod.catnip.config.ui.ConfigScreen;
import net.createmod.catnip.render.SuperBufferFactory; import net.createmod.catnip.render.CachedBuffers;
import net.createmod.catnip.render.SuperByteBufferCache; import net.createmod.catnip.render.SuperByteBufferCache;
import net.createmod.catnip.utility.lang.Components; import net.createmod.catnip.utility.lang.Components;
import net.createmod.ponder.foundation.PonderIndex; import net.createmod.ponder.foundation.PonderIndex;
@ -91,10 +89,9 @@ public class CreateClient {
//BUFFER_CACHE.registerCompartment(WaterWheelRenderer.WATER_WHEEL); //BUFFER_CACHE.registerCompartment(WaterWheelRenderer.WATER_WHEEL);
//BUFFER_CACHE.registerCompartment(SBBContraptionManager.CONTRAPTION, 20); //BUFFER_CACHE.registerCompartment(SBBContraptionManager.CONTRAPTION, 20);
//BUFFER_CACHE.registerCompartment(WorldSectionElement.DOC_WORLD_SECTION, 20); //BUFFER_CACHE.registerCompartment(WorldSectionElement.DOC_WORLD_SECTION, 20);
SuperBufferFactory.setInstance(new FlwSuperBufferFactory());
SuperByteBufferCache.getInstance().registerCompartment(CachedPartialBuffers.PARTIAL); SuperByteBufferCache.getInstance().registerCompartment(CachedBuffers.PARTIAL);
SuperByteBufferCache.getInstance().registerCompartment(CachedPartialBuffers.DIRECTIONAL_PARTIAL); SuperByteBufferCache.getInstance().registerCompartment(CachedBuffers.DIRECTIONAL_PARTIAL);
SuperByteBufferCache.getInstance().registerCompartment(KineticBlockEntityRenderer.KINETIC_BLOCK); SuperByteBufferCache.getInstance().registerCompartment(KineticBlockEntityRenderer.KINETIC_BLOCK);
SuperByteBufferCache.getInstance().registerCompartment(WaterWheelRenderer.WATER_WHEEL); SuperByteBufferCache.getInstance().registerCompartment(WaterWheelRenderer.WATER_WHEEL);
SuperByteBufferCache.getInstance().registerCompartment(SBBContraptionManager.CONTRAPTION, 20); SuperByteBufferCache.getInstance().registerCompartment(SBBContraptionManager.CONTRAPTION, 20);

View file

@ -8,8 +8,8 @@ import com.simibubi.create.AllBlocks;
import com.simibubi.create.AllPartialModels; import com.simibubi.create.AllPartialModels;
import com.simibubi.create.AllSpriteShifts; import com.simibubi.create.AllSpriteShifts;
import com.simibubi.create.content.processing.burner.BlazeBurnerBlock.HeatLevel; import com.simibubi.create.content.processing.burner.BlazeBurnerBlock.HeatLevel;
import com.simibubi.create.foundation.render.CachedPartialBuffers;
import net.createmod.catnip.render.CachedBuffers;
import net.createmod.catnip.render.SpriteShiftEntry; import net.createmod.catnip.render.SpriteShiftEntry;
import net.createmod.catnip.utility.AnimationTickHolder; import net.createmod.catnip.utility.AnimationTickHolder;
import net.createmod.ponder.utility.WorldTickHolder; import net.createmod.ponder.utility.WorldTickHolder;
@ -87,7 +87,7 @@ public class AnimatedBlazeBurner extends AnimatedKinetics {
MultiBufferSource.BufferSource buffer = mc.renderBuffers() MultiBufferSource.BufferSource buffer = mc.renderBuffers()
.bufferSource(); .bufferSource();
VertexConsumer vb = buffer.getBuffer(RenderType.cutoutMipped()); VertexConsumer vb = buffer.getBuffer(RenderType.cutoutMipped());
CachedPartialBuffers.partial(AllPartialModels.BLAZE_BURNER_FLAME, Blocks.AIR.defaultBlockState()) CachedBuffers.partial(AllPartialModels.BLAZE_BURNER_FLAME, Blocks.AIR.defaultBlockState())
.shiftUVScrolling(spriteShift, (float) uScroll, (float) vScroll) .shiftUVScrolling(spriteShift, (float) uScroll, (float) vScroll)
.light(LightTexture.FULL_BRIGHT) .light(LightTexture.FULL_BRIGHT)
.renderInto(matrixStack, vb); .renderInto(matrixStack, vb);

View file

@ -4,7 +4,6 @@ import com.jozufozu.flywheel.core.PartialModel;
import com.simibubi.create.AllBlocks; import com.simibubi.create.AllBlocks;
import com.simibubi.create.AllPartialModels; import com.simibubi.create.AllPartialModels;
import com.simibubi.create.foundation.gui.CustomLightingSettings; import com.simibubi.create.foundation.gui.CustomLightingSettings;
import com.simibubi.create.foundation.gui.element.PartialModelGuiElement;
import mezz.jei.api.gui.drawable.IDrawable; import mezz.jei.api.gui.drawable.IDrawable;
import net.createmod.catnip.gui.ILightingSettings; import net.createmod.catnip.gui.ILightingSettings;
@ -37,7 +36,7 @@ public abstract class AnimatedKinetics implements IDrawable {
* Use {@link #blockElement(PartialModel)} if calling from inside a subclass. * Use {@link #blockElement(PartialModel)} if calling from inside a subclass.
*/ */
public static GuiGameElement.GuiRenderBuilder defaultBlockElement(PartialModel partial) { public static GuiGameElement.GuiRenderBuilder defaultBlockElement(PartialModel partial) {
return PartialModelGuiElement.of(partial) return GuiGameElement.of(partial)
.lighting(DEFAULT_LIGHTING); .lighting(DEFAULT_LIGHTING);
} }

View file

@ -13,9 +13,9 @@ import com.simibubi.create.content.contraptions.behaviour.MovementContext;
import com.simibubi.create.content.contraptions.render.ContraptionMatrices; import com.simibubi.create.content.contraptions.render.ContraptionMatrices;
import com.simibubi.create.content.redstone.nixieTube.NixieTubeRenderer; import com.simibubi.create.content.redstone.nixieTube.NixieTubeRenderer;
import com.simibubi.create.foundation.blockEntity.renderer.SmartBlockEntityRenderer; import com.simibubi.create.foundation.blockEntity.renderer.SmartBlockEntityRenderer;
import com.simibubi.create.foundation.render.CachedPartialBuffers;
import com.simibubi.create.foundation.utility.DyeHelper; import com.simibubi.create.foundation.utility.DyeHelper;
import net.createmod.catnip.render.CachedBuffers;
import net.createmod.catnip.utility.Couple; import net.createmod.catnip.utility.Couple;
import net.createmod.catnip.utility.VecHelper; import net.createmod.catnip.utility.VecHelper;
import net.createmod.catnip.utility.math.AngleHelper; import net.createmod.catnip.utility.math.AngleHelper;
@ -57,14 +57,14 @@ public class ContraptionControlsRenderer extends SmartBlockEntityRenderer<Contra
ms.translate(buttonOffset.x, buttonOffset.y, buttonOffset.z); ms.translate(buttonOffset.x, buttonOffset.y, buttonOffset.z);
VertexConsumer vc = buffer.getBuffer(RenderType.solid()); VertexConsumer vc = buffer.getBuffer(RenderType.solid());
CachedPartialBuffers.partialFacing(AllPartialModels.CONTRAPTION_CONTROLS_BUTTON, blockState, facing) CachedBuffers.partialFacing(AllPartialModels.CONTRAPTION_CONTROLS_BUTTON, blockState, facing)
.light(light) .light(light)
.renderInto(ms, vc); .renderInto(ms, vc);
ms.popPose(); ms.popPose();
int i = (((int) blockEntity.indicator.getValue(pt) / 45) % 8) + 8; int i = (((int) blockEntity.indicator.getValue(pt) / 45) % 8) + 8;
CachedPartialBuffers.partialFacing(AllPartialModels.CONTRAPTION_CONTROLS_INDICATOR.get(i % 8), blockState, facing) CachedBuffers.partialFacing(AllPartialModels.CONTRAPTION_CONTROLS_INDICATOR.get(i % 8), blockState, facing)
.light(light) .light(light)
.renderInto(ms, vc); .renderInto(ms, vc);
} }

View file

@ -9,8 +9,8 @@ import com.simibubi.create.content.contraptions.behaviour.MovementContext;
import com.simibubi.create.content.contraptions.render.ContraptionMatrices; import com.simibubi.create.content.contraptions.render.ContraptionMatrices;
import com.simibubi.create.content.contraptions.render.ContraptionRenderDispatcher; import com.simibubi.create.content.contraptions.render.ContraptionRenderDispatcher;
import com.simibubi.create.foundation.blockEntity.renderer.SafeBlockEntityRenderer; import com.simibubi.create.foundation.blockEntity.renderer.SafeBlockEntityRenderer;
import com.simibubi.create.foundation.render.CachedPartialBuffers;
import net.createmod.catnip.render.CachedBuffers;
import net.createmod.catnip.render.SuperByteBuffer; import net.createmod.catnip.render.SuperByteBuffer;
import net.createmod.catnip.utility.VecHelper; import net.createmod.catnip.utility.VecHelper;
import net.createmod.catnip.utility.math.AngleHelper; import net.createmod.catnip.utility.math.AngleHelper;
@ -33,7 +33,7 @@ public class HarvesterRenderer extends SafeBlockEntityRenderer<HarvesterBlockEnt
protected void renderSafe(HarvesterBlockEntity be, float partialTicks, PoseStack ms, MultiBufferSource buffer, protected void renderSafe(HarvesterBlockEntity be, float partialTicks, PoseStack ms, MultiBufferSource buffer,
int light, int overlay) { int light, int overlay) {
BlockState blockState = be.getBlockState(); BlockState blockState = be.getBlockState();
SuperByteBuffer superBuffer = CachedPartialBuffers.partial(AllPartialModels.HARVESTER_BLADE, blockState); SuperByteBuffer superBuffer = CachedBuffers.partial(AllPartialModels.HARVESTER_BLADE, blockState);
transform(be.getLevel(), blockState.getValue(HarvesterBlock.FACING), superBuffer, be.getAnimatedSpeed(), PIVOT); transform(be.getLevel(), blockState.getValue(HarvesterBlock.FACING), superBuffer, be.getAnimatedSpeed(), PIVOT);
superBuffer.light(light) superBuffer.light(light)
.renderInto(ms, buffer.getBuffer(RenderType.cutoutMipped())); .renderInto(ms, buffer.getBuffer(RenderType.cutoutMipped()));
@ -43,7 +43,7 @@ public class HarvesterRenderer extends SafeBlockEntityRenderer<HarvesterBlockEnt
ContraptionMatrices matrices, MultiBufferSource buffers) { ContraptionMatrices matrices, MultiBufferSource buffers) {
BlockState blockState = context.state; BlockState blockState = context.state;
Direction facing = blockState.getValue(HORIZONTAL_FACING); Direction facing = blockState.getValue(HORIZONTAL_FACING);
SuperByteBuffer superBuffer = CachedPartialBuffers.partial(AllPartialModels.HARVESTER_BLADE, blockState); SuperByteBuffer superBuffer = CachedBuffers.partial(AllPartialModels.HARVESTER_BLADE, blockState);
float speed = (float) (!VecHelper.isVecPointingTowards(context.relativeMotion, facing.getOpposite()) float speed = (float) (!VecHelper.isVecPointingTowards(context.relativeMotion, facing.getOpposite())
? context.getAnimationSpeed() ? context.getAnimationSpeed()
: 0); : 0);

View file

@ -13,8 +13,8 @@ import com.simibubi.create.content.contraptions.behaviour.MovementContext;
import com.simibubi.create.content.contraptions.render.ContraptionMatrices; import com.simibubi.create.content.contraptions.render.ContraptionMatrices;
import com.simibubi.create.content.contraptions.render.ContraptionRenderDispatcher; import com.simibubi.create.content.contraptions.render.ContraptionRenderDispatcher;
import com.simibubi.create.foundation.blockEntity.renderer.SafeBlockEntityRenderer; import com.simibubi.create.foundation.blockEntity.renderer.SafeBlockEntityRenderer;
import com.simibubi.create.foundation.render.CachedPartialBuffers;
import net.createmod.catnip.render.CachedBuffers;
import net.createmod.catnip.render.SuperByteBuffer; import net.createmod.catnip.render.SuperByteBuffer;
import net.createmod.catnip.utility.AnimationTickHolder; import net.createmod.catnip.utility.AnimationTickHolder;
import net.createmod.catnip.utility.animation.LerpedFloat; import net.createmod.catnip.utility.animation.LerpedFloat;
@ -62,8 +62,8 @@ public class PortableStorageInterfaceRenderer extends SafeBlockEntityRenderer<Po
private static void render(BlockState blockState, boolean lit, float progress, PoseStack local, private static void render(BlockState blockState, boolean lit, float progress, PoseStack local,
Consumer<SuperByteBuffer> drawCallback) { Consumer<SuperByteBuffer> drawCallback) {
SuperByteBuffer middle = CachedPartialBuffers.partial(getMiddleForState(blockState, lit), blockState); SuperByteBuffer middle = CachedBuffers.partial(getMiddleForState(blockState, lit), blockState);
SuperByteBuffer top = CachedPartialBuffers.partial(getTopForState(blockState), blockState); SuperByteBuffer top = CachedBuffers.partial(getTopForState(blockState), blockState);
if (local != null) { if (local != null) {
middle.transform(local); middle.transform(local);

View file

@ -10,8 +10,8 @@ import com.simibubi.create.content.contraptions.behaviour.MovementContext;
import com.simibubi.create.content.contraptions.render.ContraptionMatrices; import com.simibubi.create.content.contraptions.render.ContraptionMatrices;
import com.simibubi.create.content.contraptions.render.ContraptionRenderDispatcher; import com.simibubi.create.content.contraptions.render.ContraptionRenderDispatcher;
import com.simibubi.create.foundation.blockEntity.renderer.SmartBlockEntityRenderer; import com.simibubi.create.foundation.blockEntity.renderer.SmartBlockEntityRenderer;
import com.simibubi.create.foundation.render.CachedPartialBuffers;
import net.createmod.catnip.render.CachedBuffers;
import net.createmod.catnip.render.SuperByteBuffer; import net.createmod.catnip.render.SuperByteBuffer;
import net.createmod.catnip.utility.VecHelper; import net.createmod.catnip.utility.VecHelper;
import net.createmod.catnip.utility.math.AngleHelper; import net.createmod.catnip.utility.math.AngleHelper;
@ -37,7 +37,7 @@ public class RollerRenderer extends SmartBlockEntityRenderer<RollerBlockEntity>
ms.pushPose(); ms.pushPose();
ms.translate(0, -0.25, 0); ms.translate(0, -0.25, 0);
SuperByteBuffer superBuffer = CachedPartialBuffers.partial(AllPartialModels.ROLLER_WHEEL, blockState); SuperByteBuffer superBuffer = CachedBuffers.partial(AllPartialModels.ROLLER_WHEEL, blockState);
Direction facing = blockState.getValue(RollerBlock.FACING); Direction facing = blockState.getValue(RollerBlock.FACING);
superBuffer.translate(Vec3.atLowerCornerOf(facing.getNormal()) superBuffer.translate(Vec3.atLowerCornerOf(facing.getNormal())
.scale(17 / 16f)); .scale(17 / 16f));
@ -48,7 +48,7 @@ public class RollerRenderer extends SmartBlockEntityRenderer<RollerBlockEntity>
.renderInto(ms, buffer.getBuffer(RenderType.cutoutMipped())); .renderInto(ms, buffer.getBuffer(RenderType.cutoutMipped()));
ms.popPose(); ms.popPose();
CachedPartialBuffers.partial(AllPartialModels.ROLLER_FRAME, blockState) CachedBuffers.partial(AllPartialModels.ROLLER_FRAME, blockState)
.rotateCentered(Direction.UP, AngleHelper.rad(AngleHelper.horizontalAngle(facing) + 180)) .rotateCentered(Direction.UP, AngleHelper.rad(AngleHelper.horizontalAngle(facing) + 180))
.light(light) .light(light)
.renderInto(ms, buffer.getBuffer(RenderType.cutoutMipped())); .renderInto(ms, buffer.getBuffer(RenderType.cutoutMipped()));
@ -58,7 +58,7 @@ public class RollerRenderer extends SmartBlockEntityRenderer<RollerBlockEntity>
ContraptionMatrices matrices, MultiBufferSource buffers) { ContraptionMatrices matrices, MultiBufferSource buffers) {
BlockState blockState = context.state; BlockState blockState = context.state;
Direction facing = blockState.getValue(HORIZONTAL_FACING); Direction facing = blockState.getValue(HORIZONTAL_FACING);
SuperByteBuffer superBuffer = CachedPartialBuffers.partial(AllPartialModels.ROLLER_WHEEL, blockState); SuperByteBuffer superBuffer = CachedBuffers.partial(AllPartialModels.ROLLER_WHEEL, blockState);
float speed = (float) (!VecHelper.isVecPointingTowards(context.relativeMotion, facing.getOpposite()) float speed = (float) (!VecHelper.isVecPointingTowards(context.relativeMotion, facing.getOpposite())
? context.getAnimationSpeed() ? context.getAnimationSpeed()
: -context.getAnimationSpeed()); : -context.getAnimationSpeed());
@ -80,7 +80,7 @@ public class RollerRenderer extends SmartBlockEntityRenderer<RollerBlockEntity>
.renderInto(viewProjection, buffers.getBuffer(RenderType.cutoutMipped())); .renderInto(viewProjection, buffers.getBuffer(RenderType.cutoutMipped()));
viewProjection.popPose(); viewProjection.popPose();
CachedPartialBuffers.partial(AllPartialModels.ROLLER_FRAME, blockState) CachedBuffers.partial(AllPartialModels.ROLLER_FRAME, blockState)
.transform(matrices.getModel()) .transform(matrices.getModel())
.rotateCentered(Direction.UP, AngleHelper.rad(AngleHelper.horizontalAngle(facing) + 180)) .rotateCentered(Direction.UP, AngleHelper.rad(AngleHelper.horizontalAngle(facing) + 180))
.light(matrices.getWorld(), contraptionWorldLight) .light(matrices.getWorld(), contraptionWorldLight)

View file

@ -7,8 +7,8 @@ import com.simibubi.create.AllPartialModels;
import com.simibubi.create.content.contraptions.behaviour.MovementContext; import com.simibubi.create.content.contraptions.behaviour.MovementContext;
import com.simibubi.create.content.contraptions.render.ContraptionMatrices; import com.simibubi.create.content.contraptions.render.ContraptionMatrices;
import com.simibubi.create.content.contraptions.render.ContraptionRenderDispatcher; import com.simibubi.create.content.contraptions.render.ContraptionRenderDispatcher;
import com.simibubi.create.foundation.render.CachedPartialBuffers;
import net.createmod.catnip.render.CachedBuffers;
import net.createmod.catnip.render.SuperByteBuffer; import net.createmod.catnip.render.SuperByteBuffer;
import net.createmod.catnip.utility.Iterate; import net.createmod.catnip.utility.Iterate;
import net.createmod.catnip.utility.math.AngleHelper; import net.createmod.catnip.utility.math.AngleHelper;
@ -25,7 +25,7 @@ public class ControlsRenderer {
BlockState state = context.state; BlockState state = context.state;
Direction facing = state.getValue(ControlsBlock.FACING); Direction facing = state.getValue(ControlsBlock.FACING);
SuperByteBuffer cover = CachedPartialBuffers.partial(AllPartialModels.TRAIN_CONTROLS_COVER, state); SuperByteBuffer cover = CachedBuffers.partial(AllPartialModels.TRAIN_CONTROLS_COVER, state);
float hAngle = 180 + AngleHelper.horizontalAngle(facing); float hAngle = 180 + AngleHelper.horizontalAngle(facing);
PoseStack ms = matrices.getModel(); PoseStack ms = matrices.getModel();
cover.transform(ms) cover.transform(ms)
@ -39,7 +39,7 @@ public class ControlsRenderer {
for (boolean first : Iterate.trueAndFalse) { for (boolean first : Iterate.trueAndFalse) {
float vAngle = (float) Mth.clamp(first ? firstLever * 70 - 25 : secondLever * 15, -45, 45); float vAngle = (float) Mth.clamp(first ? firstLever * 70 - 25 : secondLever * 15, -45, 45);
SuperByteBuffer lever = CachedPartialBuffers.partial(AllPartialModels.TRAIN_CONTROLS_LEVER, state); SuperByteBuffer lever = CachedBuffers.partial(AllPartialModels.TRAIN_CONTROLS_LEVER, state);
ms.pushPose(); ms.pushPose();
TransformStack.cast(ms) TransformStack.cast(ms)
.centre() .centre()

View file

@ -6,8 +6,8 @@ import com.mojang.blaze3d.vertex.PoseStack;
import com.simibubi.create.AllPartialModels; import com.simibubi.create.AllPartialModels;
import com.simibubi.create.content.kinetics.base.KineticBlockEntity; import com.simibubi.create.content.kinetics.base.KineticBlockEntity;
import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer; import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer;
import com.simibubi.create.foundation.render.CachedPartialBuffers;
import net.createmod.catnip.render.CachedBuffers;
import net.createmod.catnip.render.SuperByteBuffer; import net.createmod.catnip.render.SuperByteBuffer;
import net.createmod.catnip.utility.math.AngleHelper; import net.createmod.catnip.utility.math.AngleHelper;
import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.MultiBufferSource;
@ -35,7 +35,7 @@ public class BearingRenderer<T extends KineticBlockEntity & IBearingBlockEntity>
.getValue(BlockStateProperties.FACING); .getValue(BlockStateProperties.FACING);
PartialModel top = PartialModel top =
be.isWoodenTop() ? AllPartialModels.BEARING_TOP_WOODEN : AllPartialModels.BEARING_TOP; be.isWoodenTop() ? AllPartialModels.BEARING_TOP_WOODEN : AllPartialModels.BEARING_TOP;
SuperByteBuffer superBuffer = CachedPartialBuffers.partial(top, be.getBlockState()); SuperByteBuffer superBuffer = CachedBuffers.partial(top, be.getBlockState());
float interpolatedAngle = be.getInterpolatedAngle(partialTicks - 1); float interpolatedAngle = be.getInterpolatedAngle(partialTicks - 1);
kineticRotationTransform(superBuffer, be, facing.getAxis(), (float) (interpolatedAngle / 180 * Math.PI), light); kineticRotationTransform(superBuffer, be, facing.getAxis(), (float) (interpolatedAngle / 180 * Math.PI), light);
@ -50,7 +50,7 @@ public class BearingRenderer<T extends KineticBlockEntity & IBearingBlockEntity>
@Override @Override
protected SuperByteBuffer getRotatedModel(KineticBlockEntity be, BlockState state) { protected SuperByteBuffer getRotatedModel(KineticBlockEntity be, BlockState state) {
return CachedPartialBuffers.partialFacing(AllPartialModels.SHAFT_HALF, state, state return CachedBuffers.partialFacing(AllPartialModels.SHAFT_HALF, state, state
.getValue(BearingBlock.FACING) .getValue(BearingBlock.FACING)
.getOpposite()); .getOpposite());
} }

View file

@ -15,8 +15,8 @@ import com.simibubi.create.content.contraptions.behaviour.MovementContext;
import com.simibubi.create.content.contraptions.render.ActorInstance; import com.simibubi.create.content.contraptions.render.ActorInstance;
import com.simibubi.create.content.contraptions.render.ContraptionMatrices; import com.simibubi.create.content.contraptions.render.ContraptionMatrices;
import com.simibubi.create.content.contraptions.render.ContraptionRenderDispatcher; import com.simibubi.create.content.contraptions.render.ContraptionRenderDispatcher;
import com.simibubi.create.foundation.render.CachedPartialBuffers;
import net.createmod.catnip.render.CachedBuffers;
import net.createmod.catnip.render.SuperByteBuffer; import net.createmod.catnip.render.SuperByteBuffer;
import net.createmod.catnip.utility.AnimationTickHolder; import net.createmod.catnip.utility.AnimationTickHolder;
import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.MultiBufferSource;
@ -44,7 +44,7 @@ public class StabilizedBearingMovementBehaviour implements MovementBehaviour {
Direction facing = context.state.getValue(BlockStateProperties.FACING); Direction facing = context.state.getValue(BlockStateProperties.FACING);
PartialModel top = AllPartialModels.BEARING_TOP; PartialModel top = AllPartialModels.BEARING_TOP;
SuperByteBuffer superBuffer = CachedPartialBuffers.partial(top, context.state); SuperByteBuffer superBuffer = CachedBuffers.partial(top, context.state);
float renderPartialTicks = AnimationTickHolder.getPartialTicks(); float renderPartialTicks = AnimationTickHolder.getPartialTicks();
// rotate to match blockstate // rotate to match blockstate

View file

@ -4,8 +4,8 @@ import com.jozufozu.flywheel.backend.Backend;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.simibubi.create.AllPartialModels; import com.simibubi.create.AllPartialModels;
import com.simibubi.create.foundation.blockEntity.renderer.SafeBlockEntityRenderer; import com.simibubi.create.foundation.blockEntity.renderer.SafeBlockEntityRenderer;
import com.simibubi.create.foundation.render.CachedPartialBuffers;
import net.createmod.catnip.render.CachedBuffers;
import net.createmod.catnip.render.SuperByteBuffer; import net.createmod.catnip.render.SuperByteBuffer;
import net.createmod.catnip.utility.math.AngleHelper; import net.createmod.catnip.utility.math.AngleHelper;
import net.createmod.ponder.utility.WorldTickHolder; import net.createmod.ponder.utility.WorldTickHolder;
@ -28,7 +28,7 @@ public class StickerRenderer extends SafeBlockEntityRenderer<StickerBlockEntity>
if (Backend.canUseInstancing(be.getLevel())) return; if (Backend.canUseInstancing(be.getLevel())) return;
BlockState state = be.getBlockState(); BlockState state = be.getBlockState();
SuperByteBuffer head = CachedPartialBuffers.partial(AllPartialModels.STICKER_HEAD, state); SuperByteBuffer head = CachedBuffers.partial(AllPartialModels.STICKER_HEAD, state);
float offset = be.piston.getValue(WorldTickHolder.getPartialTicks(be.getLevel())); float offset = be.piston.getValue(WorldTickHolder.getPartialTicks(be.getLevel()));
if (be.getLevel() != Minecraft.getInstance().level && !be.isVirtual()) if (be.getLevel() != Minecraft.getInstance().level && !be.isVirtual())

View file

@ -8,8 +8,8 @@ import com.simibubi.create.content.contraptions.pulley.AbstractPulleyRenderer;
import com.simibubi.create.content.contraptions.pulley.PulleyRenderer; import com.simibubi.create.content.contraptions.pulley.PulleyRenderer;
import com.simibubi.create.content.kinetics.base.KineticBlockEntity; import com.simibubi.create.content.kinetics.base.KineticBlockEntity;
import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer; import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer;
import com.simibubi.create.foundation.render.CachedPartialBuffers;
import net.createmod.catnip.render.CachedBuffers;
import net.createmod.catnip.render.SpriteShiftEntry; import net.createmod.catnip.render.SpriteShiftEntry;
import net.createmod.catnip.render.SuperByteBuffer; import net.createmod.catnip.render.SuperByteBuffer;
import net.createmod.catnip.utility.math.AngleHelper; import net.createmod.catnip.utility.math.AngleHelper;
@ -53,7 +53,7 @@ public class ElevatorPulleyRenderer extends KineticBlockEntityRenderer<ElevatorP
float blockStateAngle = float blockStateAngle =
180 + AngleHelper.horizontalAngle(blockState.getValue(ElevatorPulleyBlock.HORIZONTAL_FACING)); 180 + AngleHelper.horizontalAngle(blockState.getValue(ElevatorPulleyBlock.HORIZONTAL_FACING));
SuperByteBuffer magnet = CachedPartialBuffers.partial(AllPartialModels.ELEVATOR_MAGNET, blockState); SuperByteBuffer magnet = CachedBuffers.partial(AllPartialModels.ELEVATOR_MAGNET, blockState);
if (running || offset == 0) if (running || offset == 0)
AbstractPulleyRenderer.renderAt(world, magnet.centre() AbstractPulleyRenderer.renderAt(world, magnet.centre()
.rotateY(blockStateAngle) .rotateY(blockStateAngle)
@ -78,8 +78,8 @@ public class ElevatorPulleyRenderer extends KineticBlockEntityRenderer<ElevatorP
.light(light) .light(light)
.renderInto(ms, vb); .renderInto(ms, vb);
SuperByteBuffer halfRope = CachedPartialBuffers.partial(AllPartialModels.ELEVATOR_BELT_HALF, blockState); SuperByteBuffer halfRope = CachedBuffers.partial(AllPartialModels.ELEVATOR_BELT_HALF, blockState);
SuperByteBuffer rope = CachedPartialBuffers.partial(AllPartialModels.ELEVATOR_BELT, blockState); SuperByteBuffer rope = CachedBuffers.partial(AllPartialModels.ELEVATOR_BELT, blockState);
float f = offset % 1; float f = offset % 1;
if (f < .25f || f > .75f) { if (f < .25f || f > .75f) {
@ -110,7 +110,7 @@ public class ElevatorPulleyRenderer extends KineticBlockEntityRenderer<ElevatorP
protected SuperByteBuffer getRotatedCoil(KineticBlockEntity be) { protected SuperByteBuffer getRotatedCoil(KineticBlockEntity be) {
BlockState blockState = be.getBlockState(); BlockState blockState = be.getBlockState();
return CachedPartialBuffers.partialFacing(AllPartialModels.ELEVATOR_COIL, blockState, return CachedBuffers.partialFacing(AllPartialModels.ELEVATOR_COIL, blockState,
blockState.getValue(ElevatorPulleyBlock.HORIZONTAL_FACING)); blockState.getValue(ElevatorPulleyBlock.HORIZONTAL_FACING));
} }

View file

@ -5,8 +5,8 @@ import com.mojang.blaze3d.vertex.PoseStack;
import com.simibubi.create.AllPartialModels; import com.simibubi.create.AllPartialModels;
import com.simibubi.create.content.kinetics.base.KineticBlockEntity; import com.simibubi.create.content.kinetics.base.KineticBlockEntity;
import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer; import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer;
import com.simibubi.create.foundation.render.CachedPartialBuffers;
import net.createmod.catnip.render.CachedBuffers;
import net.createmod.catnip.render.SuperByteBuffer; import net.createmod.catnip.render.SuperByteBuffer;
import net.createmod.catnip.utility.Iterate; import net.createmod.catnip.utility.Iterate;
import net.createmod.catnip.utility.math.AngleHelper; import net.createmod.catnip.utility.math.AngleHelper;
@ -54,7 +54,7 @@ public class GantryCarriageRenderer extends KineticBlockEntityRenderer<GantryCar
if (facing == Direction.NORTH || facing == Direction.EAST) if (facing == Direction.NORTH || facing == Direction.EAST)
angleForBE *= -1; angleForBE *= -1;
SuperByteBuffer cogs = CachedPartialBuffers.partial(AllPartialModels.GANTRY_COGS, state); SuperByteBuffer cogs = CachedBuffers.partial(AllPartialModels.GANTRY_COGS, state);
cogs.centre() cogs.centre()
.rotateY(AngleHelper.horizontalAngle(facing)) .rotateY(AngleHelper.horizontalAngle(facing))
.rotateX(facing == Direction.UP ? 0 : facing == Direction.DOWN ? 180 : 90) .rotateX(facing == Direction.UP ? 0 : facing == Direction.DOWN ? 180 : 90)

View file

@ -8,9 +8,9 @@ import com.mojang.blaze3d.vertex.VertexConsumer;
import com.simibubi.create.AllPartialModels; import com.simibubi.create.AllPartialModels;
import com.simibubi.create.content.contraptions.minecart.capability.MinecartController; import com.simibubi.create.content.contraptions.minecart.capability.MinecartController;
import com.simibubi.create.content.kinetics.KineticDebugger; import com.simibubi.create.content.kinetics.KineticDebugger;
import com.simibubi.create.foundation.render.CachedPartialBuffers;
import net.createmod.catnip.CatnipClient; import net.createmod.catnip.CatnipClient;
import net.createmod.catnip.render.CachedBuffers;
import net.createmod.catnip.render.SuperByteBuffer; import net.createmod.catnip.render.SuperByteBuffer;
import net.createmod.catnip.utility.AnimationTickHolder; import net.createmod.catnip.utility.AnimationTickHolder;
import net.createmod.catnip.utility.Couple; import net.createmod.catnip.utility.Couple;
@ -64,9 +64,9 @@ public class CouplingRenderer {
BlockState renderState = Blocks.AIR.defaultBlockState(); BlockState renderState = Blocks.AIR.defaultBlockState();
VertexConsumer builder = buffer.getBuffer(RenderType.solid()); VertexConsumer builder = buffer.getBuffer(RenderType.solid());
SuperByteBuffer attachment = CachedPartialBuffers.partial(AllPartialModels.COUPLING_ATTACHMENT, renderState); SuperByteBuffer attachment = CachedBuffers.partial(AllPartialModels.COUPLING_ATTACHMENT, renderState);
SuperByteBuffer ring = CachedPartialBuffers.partial(AllPartialModels.COUPLING_RING, renderState); SuperByteBuffer ring = CachedBuffers.partial(AllPartialModels.COUPLING_RING, renderState);
SuperByteBuffer connector = CachedPartialBuffers.partial(AllPartialModels.COUPLING_CONNECTOR, renderState); SuperByteBuffer connector = CachedBuffers.partial(AllPartialModels.COUPLING_CONNECTOR, renderState);
Vec3 zero = Vec3.ZERO; Vec3 zero = Vec3.ZERO;
Vec3 firstEndpoint = transforms.getFirst() Vec3 firstEndpoint = transforms.getFirst()

View file

@ -7,8 +7,8 @@ import com.mojang.blaze3d.vertex.VertexConsumer;
import com.simibubi.create.content.kinetics.base.IRotate; import com.simibubi.create.content.kinetics.base.IRotate;
import com.simibubi.create.content.kinetics.base.KineticBlockEntity; import com.simibubi.create.content.kinetics.base.KineticBlockEntity;
import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer; import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer;
import com.simibubi.create.foundation.render.CachedPartialBuffers;
import net.createmod.catnip.render.CachedBuffers;
import net.createmod.catnip.render.SuperByteBuffer; import net.createmod.catnip.render.SuperByteBuffer;
import net.createmod.catnip.utility.math.AngleHelper; import net.createmod.catnip.utility.math.AngleHelper;
import net.minecraft.client.renderer.LevelRenderer; import net.minecraft.client.renderer.LevelRenderer;
@ -60,8 +60,8 @@ public abstract class AbstractPulleyRenderer<T extends KineticBlockEntity> exten
BlockState blockState = be.getBlockState(); BlockState blockState = be.getBlockState();
BlockPos pos = be.getBlockPos(); BlockPos pos = be.getBlockPos();
SuperByteBuffer halfMagnet = CachedPartialBuffers.partial(this.halfMagnet, blockState); SuperByteBuffer halfMagnet = CachedBuffers.partial(this.halfMagnet, blockState);
SuperByteBuffer halfRope = CachedPartialBuffers.partial(this.halfRope, blockState); SuperByteBuffer halfRope = CachedBuffers.partial(this.halfRope, blockState);
SuperByteBuffer magnet = renderMagnet(be); SuperByteBuffer magnet = renderMagnet(be);
SuperByteBuffer rope = renderRope(be); SuperByteBuffer rope = renderRope(be);
@ -108,7 +108,7 @@ public abstract class AbstractPulleyRenderer<T extends KineticBlockEntity> exten
protected SuperByteBuffer getRotatedCoil(T be) { protected SuperByteBuffer getRotatedCoil(T be) {
BlockState blockState = be.getBlockState(); BlockState blockState = be.getBlockState();
return CachedPartialBuffers.partialFacing(getCoil(), blockState, return CachedBuffers.partialFacing(getCoil(), blockState,
Direction.get(AxisDirection.POSITIVE, getShaftAxis(be))); Direction.get(AxisDirection.POSITIVE, getShaftAxis(be)));
} }

View file

@ -5,7 +5,7 @@ import com.simibubi.create.AllBlocks;
import com.simibubi.create.AllPartialModels; import com.simibubi.create.AllPartialModels;
import com.simibubi.create.content.contraptions.AbstractContraptionEntity; import com.simibubi.create.content.contraptions.AbstractContraptionEntity;
import net.createmod.catnip.render.CachedBlockBuffers; import net.createmod.catnip.render.CachedBuffers;
import net.createmod.catnip.render.SuperByteBuffer; import net.createmod.catnip.render.SuperByteBuffer;
import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider;
import net.minecraft.core.Direction.Axis; import net.minecraft.core.Direction.Axis;
@ -30,12 +30,12 @@ public class PulleyRenderer extends AbstractPulleyRenderer<PulleyBlockEntity> {
@Override @Override
protected SuperByteBuffer renderRope(PulleyBlockEntity be) { protected SuperByteBuffer renderRope(PulleyBlockEntity be) {
return CachedBlockBuffers.block(AllBlocks.ROPE.getDefaultState()); return CachedBuffers.block(AllBlocks.ROPE.getDefaultState());
} }
@Override @Override
protected SuperByteBuffer renderMagnet(PulleyBlockEntity be) { protected SuperByteBuffer renderMagnet(PulleyBlockEntity be) {
return CachedBlockBuffers.block(AllBlocks.PULLEY_MAGNET.getDefaultState()); return CachedBuffers.block(AllBlocks.PULLEY_MAGNET.getDefaultState());
} }
@Override @Override

View file

@ -24,8 +24,8 @@ import com.simibubi.create.content.contraptions.ContraptionWorld;
import com.simibubi.create.content.contraptions.behaviour.MovementBehaviour; import com.simibubi.create.content.contraptions.behaviour.MovementBehaviour;
import com.simibubi.create.content.contraptions.behaviour.MovementContext; import com.simibubi.create.content.contraptions.behaviour.MovementContext;
import com.simibubi.create.foundation.render.BlockEntityRenderHelper; import com.simibubi.create.foundation.render.BlockEntityRenderHelper;
import com.simibubi.create.foundation.render.FlwSuperByteBuffer;
import net.createmod.catnip.render.ShadeSpearatingSuperByteBuffer;
import net.createmod.catnip.render.SuperByteBuffer; import net.createmod.catnip.render.SuperByteBuffer;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.LevelRenderer; import net.minecraft.client.renderer.LevelRenderer;
@ -176,7 +176,7 @@ public class ContraptionRenderDispatcher {
.withBlocks(values) .withBlocks(values)
.withModelData(c.modelData) .withModelData(c.modelData)
.build(); .build();
SuperByteBuffer sbb = new FlwSuperByteBuffer(data); SuperByteBuffer sbb = new ShadeSpearatingSuperByteBuffer(data);
data.release(); data.release();
return sbb; return sbb;
} }

View file

@ -5,9 +5,8 @@ import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.VertexConsumer; import com.mojang.blaze3d.vertex.VertexConsumer;
import com.simibubi.create.AllPartialModels; import com.simibubi.create.AllPartialModels;
import com.simibubi.create.foundation.blockEntity.renderer.SafeBlockEntityRenderer; import com.simibubi.create.foundation.blockEntity.renderer.SafeBlockEntityRenderer;
import com.simibubi.create.foundation.render.CachedPartialBuffers;
import net.createmod.catnip.render.CachedBlockBuffers; import net.createmod.catnip.render.CachedBuffers;
import net.createmod.catnip.render.SuperByteBuffer; import net.createmod.catnip.render.SuperByteBuffer;
import net.createmod.catnip.utility.Couple; import net.createmod.catnip.utility.Couple;
import net.createmod.catnip.utility.Iterate; import net.createmod.catnip.utility.Iterate;
@ -55,7 +54,7 @@ public class SlidingDoorRenderer extends SafeBlockEntityRenderer<SlidingDoorBloc
boolean flip = blockState.getValue(DoorBlock.HINGE) == DoorHingeSide.RIGHT; boolean flip = blockState.getValue(DoorBlock.HINGE) == DoorHingeSide.RIGHT;
for (boolean left : Iterate.trueAndFalse) { for (boolean left : Iterate.trueAndFalse) {
SuperByteBuffer partial = CachedPartialBuffers.partial(partials.get(left ^ flip), blockState); SuperByteBuffer partial = CachedBuffers.partial(partials.get(left ^ flip), blockState);
float f = flip ? -1 : 1; float f = flip ? -1 : 1;
partial.translate(0, -1 / 512f, 0) partial.translate(0, -1 / 512f, 0)
@ -83,7 +82,7 @@ public class SlidingDoorRenderer extends SafeBlockEntityRenderer<SlidingDoorBloc
} }
for (DoubleBlockHalf half : DoubleBlockHalf.values()) { for (DoubleBlockHalf half : DoubleBlockHalf.values()) {
CachedBlockBuffers.block(blockState.setValue(DoorBlock.OPEN, false) CachedBuffers.block(blockState.setValue(DoorBlock.OPEN, false)
.setValue(DoorBlock.HALF, half)) .setValue(DoorBlock.HALF, half))
.translate(0, half == DoubleBlockHalf.UPPER ? 1 - 1 / 512f : 0, 0) .translate(0, half == DoubleBlockHalf.UPPER ? 1 - 1 / 512f : 0, 0)
.translate(offset) .translate(offset)

View file

@ -5,8 +5,8 @@ import com.mojang.blaze3d.vertex.PoseStack;
import com.simibubi.create.AllPartialModels; import com.simibubi.create.AllPartialModels;
import com.simibubi.create.content.decoration.steamWhistle.WhistleBlock.WhistleSize; import com.simibubi.create.content.decoration.steamWhistle.WhistleBlock.WhistleSize;
import com.simibubi.create.foundation.blockEntity.renderer.SafeBlockEntityRenderer; import com.simibubi.create.foundation.blockEntity.renderer.SafeBlockEntityRenderer;
import com.simibubi.create.foundation.render.CachedPartialBuffers;
import net.createmod.catnip.render.CachedBuffers;
import net.createmod.catnip.utility.math.AngleHelper; import net.createmod.catnip.utility.math.AngleHelper;
import net.createmod.ponder.utility.WorldTickHolder; import net.createmod.ponder.utility.WorldTickHolder;
import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.MultiBufferSource;
@ -39,7 +39,7 @@ public class WhistleRenderer extends SafeBlockEntityRenderer<WhistleBlockEntity>
offset -= Math.sin(wiggleProgress * (2 * Mth.PI) * (4 - size.ordinal())) / 16f; offset -= Math.sin(wiggleProgress * (2 * Mth.PI) * (4 - size.ordinal())) / 16f;
} }
CachedPartialBuffers.partial(mouth, blockState) CachedBuffers.partial(mouth, blockState)
.centre() .centre()
.rotateY(AngleHelper.horizontalAngle(direction)) .rotateY(AngleHelper.horizontalAngle(direction))
.unCentre() .unCentre()

View file

@ -1,9 +1,8 @@
package com.simibubi.create.content.equipment.armor; package com.simibubi.create.content.equipment.armor;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.simibubi.create.foundation.render.CachedPartialBuffers;
import net.createmod.catnip.render.CachedBlockBuffers; import net.createmod.catnip.render.CachedBuffers;
import net.createmod.catnip.render.SuperByteBuffer; import net.createmod.catnip.render.SuperByteBuffer;
import net.createmod.catnip.utility.math.AngleHelper; import net.createmod.catnip.utility.math.AngleHelper;
import net.createmod.ponder.utility.WorldTickHolder; import net.createmod.ponder.utility.WorldTickHolder;
@ -46,8 +45,8 @@ public class BacktankArmorLayer<T extends LivingEntity, M extends EntityModel<T>
RenderType renderType = Sheets.cutoutBlockSheet(); RenderType renderType = Sheets.cutoutBlockSheet();
BlockState renderedState = item.getBlock().defaultBlockState() BlockState renderedState = item.getBlock().defaultBlockState()
.setValue(BacktankBlock.HORIZONTAL_FACING, Direction.SOUTH); .setValue(BacktankBlock.HORIZONTAL_FACING, Direction.SOUTH);
SuperByteBuffer backtank = CachedBlockBuffers.block(renderedState); SuperByteBuffer backtank = CachedBuffers.block(renderedState);
SuperByteBuffer cogs = CachedPartialBuffers.partial(BacktankRenderer.getCogsModel(renderedState), renderedState); SuperByteBuffer cogs = CachedBuffers.partial(BacktankRenderer.getCogsModel(renderedState), renderedState);
ms.pushPose(); ms.pushPose();

View file

@ -5,8 +5,8 @@ import com.mojang.blaze3d.vertex.PoseStack;
import com.simibubi.create.AllBlocks; import com.simibubi.create.AllBlocks;
import com.simibubi.create.AllPartialModels; import com.simibubi.create.AllPartialModels;
import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer; import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer;
import com.simibubi.create.foundation.render.CachedPartialBuffers;
import net.createmod.catnip.render.CachedBuffers;
import net.createmod.catnip.render.SuperByteBuffer; import net.createmod.catnip.render.SuperByteBuffer;
import net.createmod.catnip.utility.math.AngleHelper; import net.createmod.catnip.utility.math.AngleHelper;
import net.createmod.ponder.utility.WorldTickHolder; import net.createmod.ponder.utility.WorldTickHolder;
@ -27,7 +27,7 @@ public class BacktankRenderer extends KineticBlockEntityRenderer<BacktankBlockEn
super.renderSafe(be, partialTicks, ms, buffer, light, overlay); super.renderSafe(be, partialTicks, ms, buffer, light, overlay);
BlockState blockState = be.getBlockState(); BlockState blockState = be.getBlockState();
SuperByteBuffer cogs = CachedPartialBuffers.partial(getCogsModel(blockState), blockState); SuperByteBuffer cogs = CachedBuffers.partial(getCogsModel(blockState), blockState);
cogs.centre() cogs.centre()
.rotateY(180 + AngleHelper.horizontalAngle(blockState.getValue(BacktankBlock.HORIZONTAL_FACING))) .rotateY(180 + AngleHelper.horizontalAngle(blockState.getValue(BacktankBlock.HORIZONTAL_FACING)))
.unCentre() .unCentre()
@ -41,7 +41,7 @@ public class BacktankRenderer extends KineticBlockEntityRenderer<BacktankBlockEn
@Override @Override
protected SuperByteBuffer getRotatedModel(BacktankBlockEntity be, BlockState state) { protected SuperByteBuffer getRotatedModel(BacktankBlockEntity be, BlockState state) {
return CachedPartialBuffers.partial(getShaftModel(state), state); return CachedBuffers.partial(getShaftModel(state), state);
} }
public static PartialModel getCogsModel(BlockState state) { public static PartialModel getCogsModel(BlockState state) {

View file

@ -2,8 +2,8 @@ package com.simibubi.create.content.equipment.bell;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.simibubi.create.foundation.blockEntity.renderer.SafeBlockEntityRenderer; import com.simibubi.create.foundation.blockEntity.renderer.SafeBlockEntityRenderer;
import com.simibubi.create.foundation.render.CachedPartialBuffers;
import net.createmod.catnip.render.CachedBuffers;
import net.createmod.catnip.render.SuperByteBuffer; import net.createmod.catnip.render.SuperByteBuffer;
import net.createmod.catnip.utility.math.AngleHelper; import net.createmod.catnip.utility.math.AngleHelper;
import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.MultiBufferSource;
@ -26,7 +26,7 @@ public class BellRenderer<BE extends AbstractBellBlockEntity> extends SafeBlockE
Direction facing = state.getValue(BellBlock.FACING); Direction facing = state.getValue(BellBlock.FACING);
BellAttachType attachment = state.getValue(BellBlock.ATTACHMENT); BellAttachType attachment = state.getValue(BellBlock.ATTACHMENT);
SuperByteBuffer bell = CachedPartialBuffers.partial(be.getBellModel(), state); SuperByteBuffer bell = CachedBuffers.partial(be.getBellModel(), state);
if (be.isRinging) if (be.isRinging)
bell.rotateCentered(be.ringDirection.getCounterClockWise(), getSwingAngle(be.ringingTicks + partialTicks)); bell.rotateCentered(be.ringDirection.getCounterClockWise(), getSwingAngle(be.ringingTicks + partialTicks));

View file

@ -6,8 +6,8 @@ import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.math.Matrix3f; import com.mojang.math.Matrix3f;
import com.simibubi.create.AllPartialModels; import com.simibubi.create.AllPartialModels;
import com.simibubi.create.content.equipment.blueprint.BlueprintEntity.BlueprintSection; import com.simibubi.create.content.equipment.blueprint.BlueprintEntity.BlueprintSection;
import com.simibubi.create.foundation.render.CachedPartialBuffers;
import net.createmod.catnip.render.CachedBuffers;
import net.createmod.catnip.render.SuperByteBuffer; import net.createmod.catnip.render.SuperByteBuffer;
import net.createmod.catnip.utility.Couple; import net.createmod.catnip.utility.Couple;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
@ -33,7 +33,7 @@ public class BlueprintRenderer extends EntityRenderer<BlueprintEntity> {
int light) { int light) {
PartialModel partialModel = entity.size == 3 ? AllPartialModels.CRAFTING_BLUEPRINT_3x3 PartialModel partialModel = entity.size == 3 ? AllPartialModels.CRAFTING_BLUEPRINT_3x3
: entity.size == 2 ? AllPartialModels.CRAFTING_BLUEPRINT_2x2 : AllPartialModels.CRAFTING_BLUEPRINT_1x1; : entity.size == 2 ? AllPartialModels.CRAFTING_BLUEPRINT_2x2 : AllPartialModels.CRAFTING_BLUEPRINT_1x1;
SuperByteBuffer sbb = CachedPartialBuffers.partial(partialModel, Blocks.AIR.defaultBlockState()); SuperByteBuffer sbb = CachedBuffers.partial(partialModel, Blocks.AIR.defaultBlockState());
sbb.rotateY(-yaw) sbb.rotateY(-yaw)
.rotateX(90.0F + entity.getXRot()) .rotateX(90.0F + entity.getXRot())
.translate(-.5, -1 / 32f, -.5); .translate(-.5, -1 / 32f, -.5);

View file

@ -14,7 +14,6 @@ import com.simibubi.create.content.logistics.filter.FilterScreenPacket;
import com.simibubi.create.content.logistics.filter.FilterScreenPacket.Option; import com.simibubi.create.content.logistics.filter.FilterScreenPacket.Option;
import com.simibubi.create.foundation.gui.AllGuiTextures; import com.simibubi.create.foundation.gui.AllGuiTextures;
import com.simibubi.create.foundation.gui.AllIcons; import com.simibubi.create.foundation.gui.AllIcons;
import com.simibubi.create.foundation.gui.element.PartialModelGuiElement;
import com.simibubi.create.foundation.gui.menu.AbstractSimiContainerScreen; import com.simibubi.create.foundation.gui.menu.AbstractSimiContainerScreen;
import com.simibubi.create.foundation.gui.widget.IconButton; import com.simibubi.create.foundation.gui.widget.IconButton;
import com.simibubi.create.foundation.utility.CreateLang; import com.simibubi.create.foundation.utility.CreateLang;
@ -77,7 +76,7 @@ public class BlueprintScreen extends AbstractSimiContainerScreen<BlueprintMenu>
background.render(ms, x, y, this); background.render(ms, x, y, this);
font.draw(ms, title, x + 15, y + 4, 0xFFFFFF); font.draw(ms, title, x + 15, y + 4, 0xFFFFFF);
PartialModelGuiElement.of(AllPartialModels.CRAFTING_BLUEPRINT_1x1).<GuiGameElement GuiGameElement.of(AllPartialModels.CRAFTING_BLUEPRINT_1x1).<GuiGameElement
.GuiRenderBuilder>at(x + background.getWidth() + 20, y + background.getHeight() - 32, 0) .GuiRenderBuilder>at(x + background.getWidth() + 20, y + background.getHeight() - 32, 0)
.rotate(45, -45, 22.5f) .rotate(45, -45, 22.5f)
.scale(40) .scale(40)

View file

@ -10,7 +10,6 @@ import com.simibubi.create.content.equipment.symmetryWand.mirror.SymmetryMirror;
import com.simibubi.create.content.equipment.symmetryWand.mirror.TriplePlaneMirror; import com.simibubi.create.content.equipment.symmetryWand.mirror.TriplePlaneMirror;
import com.simibubi.create.foundation.gui.AllGuiTextures; import com.simibubi.create.foundation.gui.AllGuiTextures;
import com.simibubi.create.foundation.gui.AllIcons; import com.simibubi.create.foundation.gui.AllIcons;
import com.simibubi.create.foundation.gui.element.PartialModelGuiElement;
import com.simibubi.create.foundation.gui.widget.IconButton; import com.simibubi.create.foundation.gui.widget.IconButton;
import com.simibubi.create.foundation.gui.widget.Label; import com.simibubi.create.foundation.gui.widget.Label;
import com.simibubi.create.foundation.gui.widget.ScrollInput; import com.simibubi.create.foundation.gui.widget.ScrollInput;
@ -140,7 +139,7 @@ public class SymmetryWandScreen extends AbstractSimiScreen {
ms.mulPose(new Vector3f(.3f, 1f, 0f).rotationDegrees(-22.5f)); ms.mulPose(new Vector3f(.3f, 1f, 0f).rotationDegrees(-22.5f));
currentElement.applyModelTransform(ms); currentElement.applyModelTransform(ms);
// RenderSystem.multMatrix(ms.peek().getModel()); // RenderSystem.multMatrix(ms.peek().getModel());
PartialModelGuiElement.of(currentElement.getModel()) GuiGameElement.of(currentElement.getModel())
.render(ms); .render(ms);
ms.popPose(); ms.popPose();

View file

@ -4,8 +4,8 @@ import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.VertexConsumer; import com.mojang.blaze3d.vertex.VertexConsumer;
import com.simibubi.create.AllPartialModels; import com.simibubi.create.AllPartialModels;
import com.simibubi.create.foundation.blockEntity.renderer.SmartBlockEntityRenderer; import com.simibubi.create.foundation.blockEntity.renderer.SmartBlockEntityRenderer;
import com.simibubi.create.foundation.render.CachedPartialBuffers;
import net.createmod.catnip.render.CachedBuffers;
import net.createmod.catnip.render.SuperByteBuffer; import net.createmod.catnip.render.SuperByteBuffer;
import net.createmod.catnip.utility.Iterate; import net.createmod.catnip.utility.Iterate;
import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.MultiBufferSource;
@ -28,8 +28,8 @@ public class ToolboxRenderer extends SmartBlockEntityRenderer<ToolboxBlockEntity
Direction facing = blockState.getValue(ToolboxBlock.FACING) Direction facing = blockState.getValue(ToolboxBlock.FACING)
.getOpposite(); .getOpposite();
SuperByteBuffer lid = SuperByteBuffer lid =
CachedPartialBuffers.partial(AllPartialModels.TOOLBOX_LIDS.get(blockEntity.getColor()), blockState); CachedBuffers.partial(AllPartialModels.TOOLBOX_LIDS.get(blockEntity.getColor()), blockState);
SuperByteBuffer drawer = CachedPartialBuffers.partial(AllPartialModels.TOOLBOX_DRAWER, blockState); SuperByteBuffer drawer = CachedBuffers.partial(AllPartialModels.TOOLBOX_DRAWER, blockState);
float lidAngle = blockEntity.lid.getValue(partialTicks); float lidAngle = blockEntity.lid.getValue(partialTicks);
float drawerOffset = blockEntity.drawers.getValue(partialTicks); float drawerOffset = blockEntity.drawers.getValue(partialTicks);

View file

@ -12,7 +12,6 @@ import com.simibubi.create.AllPackets;
import com.simibubi.create.AllPartialModels; import com.simibubi.create.AllPartialModels;
import com.simibubi.create.foundation.gui.AllGuiTextures; import com.simibubi.create.foundation.gui.AllGuiTextures;
import com.simibubi.create.foundation.gui.AllIcons; import com.simibubi.create.foundation.gui.AllIcons;
import com.simibubi.create.foundation.gui.element.PartialModelGuiElement;
import com.simibubi.create.foundation.gui.menu.AbstractSimiContainerScreen; import com.simibubi.create.foundation.gui.menu.AbstractSimiContainerScreen;
import com.simibubi.create.foundation.gui.widget.IconButton; import com.simibubi.create.foundation.gui.widget.IconButton;
import com.simibubi.create.foundation.utility.CreateLang; import com.simibubi.create.foundation.utility.CreateLang;
@ -142,7 +141,7 @@ public class ToolboxScreen extends AbstractSimiContainerScreen<ToolboxMenu> {
.translate(0, -6 / 16f, 12 / 16f) .translate(0, -6 / 16f, 12 / 16f)
.rotateX(-105 * menu.contentHolder.lid.getValue(partialTicks)) .rotateX(-105 * menu.contentHolder.lid.getValue(partialTicks))
.translate(0, 6 / 16f, -12 / 16f); .translate(0, 6 / 16f, -12 / 16f);
PartialModelGuiElement.of(AllPartialModels.TOOLBOX_LIDS.get(color)) GuiGameElement.of(AllPartialModels.TOOLBOX_LIDS.get(color))
.render(ms); .render(ms);
ms.popPose(); ms.popPose();
@ -150,7 +149,7 @@ public class ToolboxScreen extends AbstractSimiContainerScreen<ToolboxMenu> {
ms.pushPose(); ms.pushPose();
ms.translate(0, -offset * 1 / 8f, ms.translate(0, -offset * 1 / 8f,
menu.contentHolder.drawers.getValue(partialTicks) * -.175f * (2 - offset)); menu.contentHolder.drawers.getValue(partialTicks) * -.175f * (2 - offset));
PartialModelGuiElement.of(AllPartialModels.TOOLBOX_DRAWER) GuiGameElement.of(AllPartialModels.TOOLBOX_DRAWER)
.render(ms); .render(ms);
ms.popPose(); ms.popPose();
} }

View file

@ -3,8 +3,8 @@ package com.simibubi.create.content.fluids.hosePulley;
import com.jozufozu.flywheel.core.PartialModel; import com.jozufozu.flywheel.core.PartialModel;
import com.simibubi.create.AllPartialModels; import com.simibubi.create.AllPartialModels;
import com.simibubi.create.content.contraptions.pulley.AbstractPulleyRenderer; import com.simibubi.create.content.contraptions.pulley.AbstractPulleyRenderer;
import com.simibubi.create.foundation.render.CachedPartialBuffers;
import net.createmod.catnip.render.CachedBuffers;
import net.createmod.catnip.render.SuperByteBuffer; import net.createmod.catnip.render.SuperByteBuffer;
import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider;
import net.minecraft.core.Direction.Axis; import net.minecraft.core.Direction.Axis;
@ -30,12 +30,12 @@ public class HosePulleyRenderer extends AbstractPulleyRenderer<HosePulleyBlockEn
@Override @Override
protected SuperByteBuffer renderRope(HosePulleyBlockEntity be) { protected SuperByteBuffer renderRope(HosePulleyBlockEntity be) {
return CachedPartialBuffers.partial(AllPartialModels.HOSE, be.getBlockState()); return CachedBuffers.partial(AllPartialModels.HOSE, be.getBlockState());
} }
@Override @Override
protected SuperByteBuffer renderMagnet(HosePulleyBlockEntity be) { protected SuperByteBuffer renderMagnet(HosePulleyBlockEntity be) {
return CachedPartialBuffers.partial(AllPartialModels.HOSE_MAGNET, be.getBlockState()); return CachedBuffers.partial(AllPartialModels.HOSE_MAGNET, be.getBlockState());
} }
@Override @Override

View file

@ -4,8 +4,8 @@ import com.jozufozu.flywheel.backend.Backend;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.simibubi.create.AllPartialModels; import com.simibubi.create.AllPartialModels;
import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer; import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer;
import com.simibubi.create.foundation.render.CachedPartialBuffers;
import net.createmod.catnip.render.CachedBuffers;
import net.createmod.catnip.render.SuperByteBuffer; import net.createmod.catnip.render.SuperByteBuffer;
import net.createmod.catnip.utility.math.AngleHelper; import net.createmod.catnip.utility.math.AngleHelper;
import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.MultiBufferSource;
@ -30,7 +30,7 @@ public class FluidValveRenderer extends KineticBlockEntityRenderer<FluidValveBlo
super.renderSafe(be, partialTicks, ms, buffer, light, overlay); super.renderSafe(be, partialTicks, ms, buffer, light, overlay);
BlockState blockState = be.getBlockState(); BlockState blockState = be.getBlockState();
SuperByteBuffer pointer = CachedPartialBuffers.partial(AllPartialModels.FLUID_VALVE_POINTER, blockState); SuperByteBuffer pointer = CachedBuffers.partial(AllPartialModels.FLUID_VALVE_POINTER, blockState);
Direction facing = blockState.getValue(FluidValveBlock.FACING); Direction facing = blockState.getValue(FluidValveBlock.FACING);
float pointerRotation = Mth.lerp(be.pointer.getValue(partialTicks), 0, -90); float pointerRotation = Mth.lerp(be.pointer.getValue(partialTicks), 0, -90);

View file

@ -2,8 +2,8 @@ package com.simibubi.create.content.fluids.pump;
import com.simibubi.create.AllPartialModels; import com.simibubi.create.AllPartialModels;
import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer; import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer;
import com.simibubi.create.foundation.render.CachedPartialBuffers;
import net.createmod.catnip.render.CachedBuffers;
import net.createmod.catnip.render.SuperByteBuffer; import net.createmod.catnip.render.SuperByteBuffer;
import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider;
import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.BlockState;
@ -16,7 +16,7 @@ public class PumpRenderer extends KineticBlockEntityRenderer<PumpBlockEntity> {
@Override @Override
protected SuperByteBuffer getRotatedModel(PumpBlockEntity be, BlockState state) { protected SuperByteBuffer getRotatedModel(PumpBlockEntity be, BlockState state) {
return CachedPartialBuffers.partialFacing(AllPartialModels.MECHANICAL_PUMP_COG, state); return CachedBuffers.partialFacing(AllPartialModels.MECHANICAL_PUMP_COG, state);
} }
} }

View file

@ -7,8 +7,8 @@ import com.simibubi.create.foundation.blockEntity.behaviour.fluid.SmartFluidTank
import com.simibubi.create.foundation.blockEntity.behaviour.fluid.SmartFluidTankBehaviour.TankSegment; import com.simibubi.create.foundation.blockEntity.behaviour.fluid.SmartFluidTankBehaviour.TankSegment;
import com.simibubi.create.foundation.blockEntity.renderer.SafeBlockEntityRenderer; import com.simibubi.create.foundation.blockEntity.renderer.SafeBlockEntityRenderer;
import com.simibubi.create.foundation.fluid.FluidRenderer; import com.simibubi.create.foundation.fluid.FluidRenderer;
import com.simibubi.create.foundation.render.CachedPartialBuffers;
import net.createmod.catnip.render.CachedBuffers;
import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.RenderType;
import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider;
@ -82,7 +82,7 @@ public class SpoutRenderer extends SafeBlockEntityRenderer<SpoutBlockEntity> {
ms.pushPose(); ms.pushPose();
for (PartialModel bit : BITS) { for (PartialModel bit : BITS) {
CachedPartialBuffers.partial(bit, be.getBlockState()) CachedBuffers.partial(bit, be.getBlockState())
.light(light) .light(light)
.renderInto(ms, buffer.getBuffer(RenderType.solid())); .renderInto(ms, buffer.getBuffer(RenderType.solid()));
ms.translate(0, -3 * squeeze / 32f, 0); ms.translate(0, -3 * squeeze / 32f, 0);

View file

@ -6,8 +6,8 @@ import com.mojang.blaze3d.vertex.VertexConsumer;
import com.simibubi.create.AllPartialModels; import com.simibubi.create.AllPartialModels;
import com.simibubi.create.foundation.blockEntity.renderer.SafeBlockEntityRenderer; import com.simibubi.create.foundation.blockEntity.renderer.SafeBlockEntityRenderer;
import com.simibubi.create.foundation.fluid.FluidRenderer; import com.simibubi.create.foundation.fluid.FluidRenderer;
import com.simibubi.create.foundation.render.CachedPartialBuffers;
import net.createmod.catnip.render.CachedBuffers;
import net.createmod.catnip.utility.Iterate; import net.createmod.catnip.utility.Iterate;
import net.createmod.catnip.utility.animation.LerpedFloat; import net.createmod.catnip.utility.animation.LerpedFloat;
import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.MultiBufferSource;
@ -90,13 +90,13 @@ public class FluidTankRenderer extends SafeBlockEntityRenderer<FluidTankBlockEnt
for (Direction d : Iterate.horizontalDirections) { for (Direction d : Iterate.horizontalDirections) {
ms.pushPose(); ms.pushPose();
CachedPartialBuffers.partial(AllPartialModels.BOILER_GAUGE, blockState) CachedBuffers.partial(AllPartialModels.BOILER_GAUGE, blockState)
.rotateY(d.toYRot()) .rotateY(d.toYRot())
.unCentre() .unCentre()
.translate(be.width / 2f - 6 / 16f, 0, 0) .translate(be.width / 2f - 6 / 16f, 0, 0)
.light(light) .light(light)
.renderInto(ms, vb); .renderInto(ms, vb);
CachedPartialBuffers.partial(AllPartialModels.BOILER_GAUGE_DIAL, blockState) CachedBuffers.partial(AllPartialModels.BOILER_GAUGE_DIAL, blockState)
.rotateY(d.toYRot()) .rotateY(d.toYRot())
.unCentre() .unCentre()
.translate(be.width / 2f - 6 / 16f, 0, 0) .translate(be.width / 2f - 6 / 16f, 0, 0)

View file

@ -10,7 +10,7 @@ import com.simibubi.create.content.kinetics.KineticDebugger;
import com.simibubi.create.content.kinetics.simpleRelays.ICogWheel; import com.simibubi.create.content.kinetics.simpleRelays.ICogWheel;
import com.simibubi.create.foundation.blockEntity.renderer.SafeBlockEntityRenderer; import com.simibubi.create.foundation.blockEntity.renderer.SafeBlockEntityRenderer;
import net.createmod.catnip.render.CachedBlockBuffers; import net.createmod.catnip.render.CachedBuffers;
import net.createmod.catnip.render.SuperByteBuffer; import net.createmod.catnip.render.SuperByteBuffer;
import net.createmod.catnip.render.SuperByteBufferCache; import net.createmod.catnip.render.SuperByteBufferCache;
import net.createmod.catnip.utility.theme.Color; import net.createmod.catnip.utility.theme.Color;
@ -62,12 +62,12 @@ public class KineticBlockEntityRenderer<T extends KineticBlockEntity> extends Sa
} }
protected SuperByteBuffer getRotatedModel(T be, BlockState state) { protected SuperByteBuffer getRotatedModel(T be, BlockState state) {
return CachedBlockBuffers.block(KINETIC_BLOCK, state); return CachedBuffers.block(KINETIC_BLOCK, state);
} }
public static void renderRotatingKineticBlock(KineticBlockEntity be, BlockState renderedState, PoseStack ms, public static void renderRotatingKineticBlock(KineticBlockEntity be, BlockState renderedState, PoseStack ms,
VertexConsumer buffer, int light) { VertexConsumer buffer, int light) {
SuperByteBuffer superByteBuffer = CachedBlockBuffers.block(KINETIC_BLOCK, renderedState); SuperByteBuffer superByteBuffer = CachedBuffers.block(KINETIC_BLOCK, renderedState);
renderRotatingBuffer(be, superByteBuffer, ms, buffer, light); renderRotatingBuffer(be, superByteBuffer, ms, buffer, light);
} }

View file

@ -15,9 +15,9 @@ import com.simibubi.create.AllSpriteShifts;
import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer; import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer;
import com.simibubi.create.content.kinetics.belt.transport.TransportedItemStack; import com.simibubi.create.content.kinetics.belt.transport.TransportedItemStack;
import com.simibubi.create.foundation.blockEntity.renderer.SafeBlockEntityRenderer; import com.simibubi.create.foundation.blockEntity.renderer.SafeBlockEntityRenderer;
import com.simibubi.create.foundation.render.CachedPartialBuffers;
import com.simibubi.create.foundation.render.ShadowRenderHelper; import com.simibubi.create.foundation.render.ShadowRenderHelper;
import net.createmod.catnip.render.CachedBuffers;
import net.createmod.catnip.render.SpriteShiftEntry; import net.createmod.catnip.render.SpriteShiftEntry;
import net.createmod.catnip.render.SuperByteBuffer; import net.createmod.catnip.render.SuperByteBuffer;
import net.createmod.catnip.utility.Iterate; import net.createmod.catnip.utility.Iterate;
@ -95,7 +95,7 @@ public class BeltRenderer extends SafeBlockEntityRenderer<BeltBlockEntity> {
PartialModel beltPartial = getBeltPartial(diagonal, start, end, bottom); PartialModel beltPartial = getBeltPartial(diagonal, start, end, bottom);
SuperByteBuffer beltBuffer = CachedPartialBuffers.partial(beltPartial, blockState) SuperByteBuffer beltBuffer = CachedBuffers.partial(beltPartial, blockState)
.light(light); .light(light);
SpriteShiftEntry spriteShift = getSpriteShiftEntry(color, diagonal, bottom); SpriteShiftEntry spriteShift = getSpriteShiftEntry(color, diagonal, bottom);
@ -140,7 +140,7 @@ public class BeltRenderer extends SafeBlockEntityRenderer<BeltBlockEntity> {
return stack; return stack;
}; };
SuperByteBuffer superBuffer = CachedPartialBuffers.partialDirectional(AllPartialModels.BELT_PULLEY, blockState, dir, matrixStackSupplier); SuperByteBuffer superBuffer = CachedBuffers.partialDirectional(AllPartialModels.BELT_PULLEY, blockState, dir, matrixStackSupplier);
KineticBlockEntityRenderer.standardKineticRotationTransform(superBuffer, be, light).renderInto(ms, vb); KineticBlockEntityRenderer.standardKineticRotationTransform(superBuffer, be, light).renderInto(ms, vb);
} }
} }

View file

@ -6,8 +6,8 @@ import com.mojang.blaze3d.vertex.VertexConsumer;
import com.simibubi.create.AllPartialModels; import com.simibubi.create.AllPartialModels;
import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer; import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer;
import com.simibubi.create.content.kinetics.clock.CuckooClockBlockEntity.Animation; import com.simibubi.create.content.kinetics.clock.CuckooClockBlockEntity.Animation;
import com.simibubi.create.foundation.render.CachedPartialBuffers;
import net.createmod.catnip.render.CachedBuffers;
import net.createmod.catnip.render.SuperByteBuffer; import net.createmod.catnip.render.SuperByteBuffer;
import net.createmod.catnip.utility.math.AngleHelper; import net.createmod.catnip.utility.math.AngleHelper;
import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.MultiBufferSource;
@ -36,8 +36,8 @@ public class CuckooClockRenderer extends KineticBlockEntityRenderer<CuckooClockB
VertexConsumer vb = buffer.getBuffer(RenderType.solid()); VertexConsumer vb = buffer.getBuffer(RenderType.solid());
// Render Hands // Render Hands
SuperByteBuffer hourHand = CachedPartialBuffers.partial(AllPartialModels.CUCKOO_HOUR_HAND, blockState); SuperByteBuffer hourHand = CachedBuffers.partial(AllPartialModels.CUCKOO_HOUR_HAND, blockState);
SuperByteBuffer minuteHand = CachedPartialBuffers.partial(AllPartialModels.CUCKOO_MINUTE_HAND, blockState); SuperByteBuffer minuteHand = CachedBuffers.partial(AllPartialModels.CUCKOO_MINUTE_HAND, blockState);
float hourAngle = be.hourHand.getValue(partialTicks); float hourAngle = be.hourHand.getValue(partialTicks);
float minuteAngle = be.minuteHand.getValue(partialTicks); float minuteAngle = be.minuteHand.getValue(partialTicks);
rotateHand(hourHand, hourAngle, direction).light(light) rotateHand(hourHand, hourAngle, direction).light(light)
@ -46,8 +46,8 @@ public class CuckooClockRenderer extends KineticBlockEntityRenderer<CuckooClockB
.renderInto(ms, vb); .renderInto(ms, vb);
// Doors // Doors
SuperByteBuffer leftDoor = CachedPartialBuffers.partial(AllPartialModels.CUCKOO_LEFT_DOOR, blockState); SuperByteBuffer leftDoor = CachedBuffers.partial(AllPartialModels.CUCKOO_LEFT_DOOR, blockState);
SuperByteBuffer rightDoor = CachedPartialBuffers.partial(AllPartialModels.CUCKOO_RIGHT_DOOR, blockState); SuperByteBuffer rightDoor = CachedBuffers.partial(AllPartialModels.CUCKOO_RIGHT_DOOR, blockState);
float angle = 0; float angle = 0;
float offset = 0; float offset = 0;
@ -78,7 +78,7 @@ public class CuckooClockRenderer extends KineticBlockEntityRenderer<CuckooClockB
offset = -(angle / 135) * 1 / 2f + 10 / 16f; offset = -(angle / 135) * 1 / 2f + 10 / 16f;
PartialModel partialModel = (be.animationType == Animation.PIG ? AllPartialModels.CUCKOO_PIG : AllPartialModels.CUCKOO_CREEPER); PartialModel partialModel = (be.animationType == Animation.PIG ? AllPartialModels.CUCKOO_PIG : AllPartialModels.CUCKOO_CREEPER);
SuperByteBuffer figure = SuperByteBuffer figure =
CachedPartialBuffers.partial(partialModel, blockState); CachedBuffers.partial(partialModel, blockState);
figure.rotateCentered(Direction.UP, AngleHelper.rad(AngleHelper.horizontalAngle(direction.getCounterClockWise()))); figure.rotateCentered(Direction.UP, AngleHelper.rad(AngleHelper.horizontalAngle(direction.getCounterClockWise())));
figure.translate(offset, 0, 0); figure.translate(offset, 0, 0);
figure.light(light) figure.light(light)
@ -89,7 +89,7 @@ public class CuckooClockRenderer extends KineticBlockEntityRenderer<CuckooClockB
@Override @Override
protected SuperByteBuffer getRotatedModel(CuckooClockBlockEntity be, BlockState state) { protected SuperByteBuffer getRotatedModel(CuckooClockBlockEntity be, BlockState state) {
return CachedPartialBuffers.partialFacing(AllPartialModels.SHAFT_HALF, state, state return CachedBuffers.partialFacing(AllPartialModels.SHAFT_HALF, state, state
.getValue(CuckooClockBlock.HORIZONTAL_FACING) .getValue(CuckooClockBlock.HORIZONTAL_FACING)
.getOpposite()); .getOpposite());
} }

View file

@ -14,8 +14,8 @@ import com.simibubi.create.AllSpriteShifts;
import com.simibubi.create.content.kinetics.crafter.MechanicalCrafterBlockEntity.Phase; import com.simibubi.create.content.kinetics.crafter.MechanicalCrafterBlockEntity.Phase;
import com.simibubi.create.content.kinetics.crafter.RecipeGridHandler.GroupedItems; import com.simibubi.create.content.kinetics.crafter.RecipeGridHandler.GroupedItems;
import com.simibubi.create.foundation.blockEntity.renderer.SafeBlockEntityRenderer; import com.simibubi.create.foundation.blockEntity.renderer.SafeBlockEntityRenderer;
import com.simibubi.create.foundation.render.CachedPartialBuffers;
import net.createmod.catnip.render.CachedBuffers;
import net.createmod.catnip.render.SuperByteBuffer; import net.createmod.catnip.render.SuperByteBuffer;
import net.createmod.catnip.utility.AnimationTickHolder; import net.createmod.catnip.utility.AnimationTickHolder;
import net.createmod.catnip.utility.Pointing; import net.createmod.catnip.utility.Pointing;
@ -170,7 +170,7 @@ public class MechanicalCrafterRenderer extends SafeBlockEntityRenderer<Mechanica
VertexConsumer vb = buffer.getBuffer(RenderType.solid()); VertexConsumer vb = buffer.getBuffer(RenderType.solid());
if (!Backend.canUseInstancing(be.getLevel())) { if (!Backend.canUseInstancing(be.getLevel())) {
SuperByteBuffer superBuffer = CachedPartialBuffers.partial(AllPartialModels.SHAFTLESS_COGWHEEL, blockState); SuperByteBuffer superBuffer = CachedBuffers.partial(AllPartialModels.SHAFTLESS_COGWHEEL, blockState);
standardKineticRotationTransform(superBuffer, be, light); standardKineticRotationTransform(superBuffer, be, light);
superBuffer.rotateCentered(Direction.UP, (float) (blockState.getValue(HORIZONTAL_FACING) superBuffer.rotateCentered(Direction.UP, (float) (blockState.getValue(HORIZONTAL_FACING)
.getAxis() != Direction.Axis.X ? 0 : Math.PI / 2)); .getAxis() != Direction.Axis.X ? 0 : Math.PI / 2));
@ -211,7 +211,7 @@ public class MechanicalCrafterRenderer extends SafeBlockEntityRenderer<Mechanica
} }
private SuperByteBuffer renderAndTransform(PartialModel renderBlock, BlockState crafterState) { private SuperByteBuffer renderAndTransform(PartialModel renderBlock, BlockState crafterState) {
SuperByteBuffer buffer = CachedPartialBuffers.partial(renderBlock, crafterState); SuperByteBuffer buffer = CachedBuffers.partial(renderBlock, crafterState);
float xRot = crafterState.getValue(MechanicalCrafterBlock.POINTING) float xRot = crafterState.getValue(MechanicalCrafterBlock.POINTING)
.getXRotation(); .getXRotation();
float yRot = AngleHelper.horizontalAngle(crafterState.getValue(HORIZONTAL_FACING)); float yRot = AngleHelper.horizontalAngle(crafterState.getValue(HORIZONTAL_FACING));

View file

@ -7,8 +7,8 @@ import com.simibubi.create.AllBlocks;
import com.simibubi.create.AllPartialModels; import com.simibubi.create.AllPartialModels;
import com.simibubi.create.AllSoundEvents; import com.simibubi.create.AllSoundEvents;
import com.simibubi.create.content.kinetics.base.GeneratingKineticBlockEntity; import com.simibubi.create.content.kinetics.base.GeneratingKineticBlockEntity;
import com.simibubi.create.foundation.render.CachedPartialBuffers;
import net.createmod.catnip.render.CachedBuffers;
import net.createmod.catnip.render.SuperByteBuffer; import net.createmod.catnip.render.SuperByteBuffer;
import net.createmod.catnip.utility.AnimationTickHolder; import net.createmod.catnip.utility.AnimationTickHolder;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
@ -98,7 +98,7 @@ public class HandCrankBlockEntity extends GeneratingKineticBlockEntity {
BlockState blockState = getBlockState(); BlockState blockState = getBlockState();
Direction facing = blockState.getOptionalValue(HandCrankBlock.FACING) Direction facing = blockState.getOptionalValue(HandCrankBlock.FACING)
.orElse(Direction.UP); .orElse(Direction.UP);
return CachedPartialBuffers.partialFacing(AllPartialModels.HAND_CRANK_HANDLE, blockState, facing.getOpposite()); return CachedBuffers.partialFacing(AllPartialModels.HAND_CRANK_HANDLE, blockState, facing.getOpposite());
} }
@OnlyIn(Dist.CLIENT) @OnlyIn(Dist.CLIENT)

View file

@ -19,7 +19,7 @@ import com.simibubi.create.foundation.blockEntity.behaviour.ValueSettingsFormatt
import com.simibubi.create.foundation.blockEntity.behaviour.scrollValue.ScrollValueBehaviour; import com.simibubi.create.foundation.blockEntity.behaviour.scrollValue.ScrollValueBehaviour;
import com.simibubi.create.foundation.utility.CreateLang; import com.simibubi.create.foundation.utility.CreateLang;
import net.createmod.catnip.render.CachedBlockBuffers; import net.createmod.catnip.render.CachedBuffers;
import net.createmod.catnip.render.SuperByteBuffer; import net.createmod.catnip.render.SuperByteBuffer;
import net.createmod.catnip.utility.VecHelper; import net.createmod.catnip.utility.VecHelper;
import net.createmod.catnip.utility.lang.Components; import net.createmod.catnip.utility.lang.Components;
@ -144,7 +144,7 @@ public class ValveHandleBlockEntity extends HandCrankBlockEntity {
@Override @Override
@OnlyIn(Dist.CLIENT) @OnlyIn(Dist.CLIENT)
public SuperByteBuffer getRenderedHandle() { public SuperByteBuffer getRenderedHandle() {
return CachedBlockBuffers.block(getBlockState()); return CachedBuffers.block(getBlockState());
} }
@Override @Override

View file

@ -21,9 +21,8 @@ import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer;
import com.simibubi.create.content.kinetics.deployer.DeployerBlockEntity.Mode; import com.simibubi.create.content.kinetics.deployer.DeployerBlockEntity.Mode;
import com.simibubi.create.foundation.blockEntity.behaviour.filtering.FilteringRenderer; import com.simibubi.create.foundation.blockEntity.behaviour.filtering.FilteringRenderer;
import com.simibubi.create.foundation.blockEntity.renderer.SafeBlockEntityRenderer; import com.simibubi.create.foundation.blockEntity.renderer.SafeBlockEntityRenderer;
import com.simibubi.create.foundation.render.CachedPartialBuffers;
import net.createmod.catnip.render.CachedBlockBuffers; import net.createmod.catnip.render.CachedBuffers;
import net.createmod.catnip.render.SuperByteBuffer; import net.createmod.catnip.render.SuperByteBuffer;
import net.createmod.catnip.utility.AnimationTickHolder; import net.createmod.catnip.utility.AnimationTickHolder;
import net.createmod.catnip.utility.NBTHelper; import net.createmod.catnip.utility.NBTHelper;
@ -122,8 +121,8 @@ public class DeployerRenderer extends SafeBlockEntityRenderer<DeployerBlockEntit
BlockState blockState = be.getBlockState(); BlockState blockState = be.getBlockState();
Vec3 offset = getHandOffset(be, partialTicks, blockState); Vec3 offset = getHandOffset(be, partialTicks, blockState);
SuperByteBuffer pole = CachedPartialBuffers.partial(AllPartialModels.DEPLOYER_POLE, blockState); SuperByteBuffer pole = CachedBuffers.partial(AllPartialModels.DEPLOYER_POLE, blockState);
SuperByteBuffer hand = CachedPartialBuffers.partial(be.getHandPose(), blockState); SuperByteBuffer hand = CachedBuffers.partial(be.getHandPose(), blockState);
transform(pole.translate(offset.x, offset.y, offset.z), blockState, true) transform(pole.translate(offset.x, offset.y, offset.z), blockState, true)
.light(light) .light(light)
@ -168,9 +167,9 @@ public class DeployerRenderer extends SafeBlockEntityRenderer<DeployerBlockEntit
if (context.contraption.stalled) if (context.contraption.stalled)
speed = 0; speed = 0;
SuperByteBuffer shaft = CachedBlockBuffers.block(AllBlocks.SHAFT.getDefaultState()); SuperByteBuffer shaft = CachedBuffers.block(AllBlocks.SHAFT.getDefaultState());
SuperByteBuffer pole = CachedPartialBuffers.partial(AllPartialModels.DEPLOYER_POLE, blockState); SuperByteBuffer pole = CachedBuffers.partial(AllPartialModels.DEPLOYER_POLE, blockState);
SuperByteBuffer hand = CachedPartialBuffers.partial(handPose, blockState); SuperByteBuffer hand = CachedBuffers.partial(handPose, blockState);
double factor; double factor;
if (context.contraption.stalled || context.position == null || context.data.contains("StationaryTimer")) { if (context.contraption.stalled || context.position == null || context.data.contains("StationaryTimer")) {

View file

@ -6,8 +6,8 @@ import com.simibubi.create.content.contraptions.behaviour.MovementContext;
import com.simibubi.create.content.contraptions.render.ContraptionMatrices; import com.simibubi.create.content.contraptions.render.ContraptionMatrices;
import com.simibubi.create.content.contraptions.render.ContraptionRenderDispatcher; import com.simibubi.create.content.contraptions.render.ContraptionRenderDispatcher;
import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer; import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer;
import com.simibubi.create.foundation.render.CachedPartialBuffers;
import net.createmod.catnip.render.CachedBuffers;
import net.createmod.catnip.render.SuperByteBuffer; import net.createmod.catnip.render.SuperByteBuffer;
import net.createmod.catnip.utility.AnimationTickHolder; import net.createmod.catnip.utility.AnimationTickHolder;
import net.createmod.catnip.utility.VecHelper; import net.createmod.catnip.utility.VecHelper;
@ -26,13 +26,13 @@ public class DrillRenderer extends KineticBlockEntityRenderer<DrillBlockEntity>
@Override @Override
protected SuperByteBuffer getRotatedModel(DrillBlockEntity be, BlockState state) { protected SuperByteBuffer getRotatedModel(DrillBlockEntity be, BlockState state) {
return CachedPartialBuffers.partialFacing(AllPartialModels.DRILL_HEAD, state); return CachedBuffers.partialFacing(AllPartialModels.DRILL_HEAD, state);
} }
public static void renderInContraption(MovementContext context, VirtualRenderWorld renderWorld, public static void renderInContraption(MovementContext context, VirtualRenderWorld renderWorld,
ContraptionMatrices matrices, MultiBufferSource buffer) { ContraptionMatrices matrices, MultiBufferSource buffer) {
BlockState state = context.state; BlockState state = context.state;
SuperByteBuffer superBuffer = CachedPartialBuffers.partial(AllPartialModels.DRILL_HEAD, state); SuperByteBuffer superBuffer = CachedBuffers.partial(AllPartialModels.DRILL_HEAD, state);
Direction facing = state.getValue(DrillBlock.FACING); Direction facing = state.getValue(DrillBlock.FACING);
float speed = (float) (context.contraption.stalled float speed = (float) (context.contraption.stalled

View file

@ -7,8 +7,8 @@ import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.VertexConsumer; import com.mojang.blaze3d.vertex.VertexConsumer;
import com.simibubi.create.AllPartialModels; import com.simibubi.create.AllPartialModels;
import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer; import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer;
import com.simibubi.create.foundation.render.CachedPartialBuffers;
import net.createmod.catnip.render.CachedBuffers;
import net.createmod.catnip.render.SuperByteBuffer; import net.createmod.catnip.render.SuperByteBuffer;
import net.createmod.ponder.utility.WorldTickHolder; import net.createmod.ponder.utility.WorldTickHolder;
import net.minecraft.client.renderer.LevelRenderer; import net.minecraft.client.renderer.LevelRenderer;
@ -37,9 +37,9 @@ public class EncasedFanRenderer extends KineticBlockEntityRenderer<EncasedFanBlo
int lightInFront = LevelRenderer.getLightColor(be.getLevel(), be.getBlockPos().relative(direction)); int lightInFront = LevelRenderer.getLightColor(be.getLevel(), be.getBlockPos().relative(direction));
SuperByteBuffer shaftHalf = SuperByteBuffer shaftHalf =
CachedPartialBuffers.partialFacing(AllPartialModels.SHAFT_HALF, be.getBlockState(), direction.getOpposite()); CachedBuffers.partialFacing(AllPartialModels.SHAFT_HALF, be.getBlockState(), direction.getOpposite());
SuperByteBuffer fanInner = SuperByteBuffer fanInner =
CachedPartialBuffers.partialFacing(AllPartialModels.ENCASED_FAN_INNER, be.getBlockState(), direction.getOpposite()); CachedBuffers.partialFacing(AllPartialModels.ENCASED_FAN_INNER, be.getBlockState(), direction.getOpposite());
float time = WorldTickHolder.getRenderTime(be.getLevel()); float time = WorldTickHolder.getRenderTime(be.getLevel());
float speed = be.getSpeed() * 5; float speed = be.getSpeed() * 5;

View file

@ -5,7 +5,7 @@ import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.VertexConsumer; import com.mojang.blaze3d.vertex.VertexConsumer;
import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer; import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer;
import net.createmod.catnip.render.CachedBlockBuffers; import net.createmod.catnip.render.CachedBuffers;
import net.createmod.catnip.render.SuperByteBuffer; import net.createmod.catnip.render.SuperByteBuffer;
import net.createmod.catnip.utility.math.AngleHelper; import net.createmod.catnip.utility.math.AngleHelper;
import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.MultiBufferSource;
@ -38,7 +38,7 @@ public class FlywheelRenderer extends KineticBlockEntityRenderer<FlywheelBlockEn
private void renderFlywheel(FlywheelBlockEntity be, PoseStack ms, int light, BlockState blockState, float angle, private void renderFlywheel(FlywheelBlockEntity be, PoseStack ms, int light, BlockState blockState, float angle,
VertexConsumer vb) { VertexConsumer vb) {
SuperByteBuffer wheel = CachedBlockBuffers.block(blockState); SuperByteBuffer wheel = CachedBuffers.block(blockState);
kineticRotationTransform(wheel, be, getRotationAxisOf(be), AngleHelper.rad(angle), light); kineticRotationTransform(wheel, be, getRotationAxisOf(be), AngleHelper.rad(angle), light);
wheel.renderInto(ms, vb); wheel.renderInto(ms, vb);
} }

View file

@ -7,8 +7,8 @@ import com.mojang.blaze3d.vertex.VertexConsumer;
import com.simibubi.create.AllPartialModels; import com.simibubi.create.AllPartialModels;
import com.simibubi.create.content.kinetics.base.ShaftRenderer; import com.simibubi.create.content.kinetics.base.ShaftRenderer;
import com.simibubi.create.content.kinetics.gauge.GaugeBlock.Type; import com.simibubi.create.content.kinetics.gauge.GaugeBlock.Type;
import com.simibubi.create.foundation.render.CachedPartialBuffers;
import net.createmod.catnip.render.CachedBuffers;
import net.createmod.catnip.render.SuperByteBuffer; import net.createmod.catnip.render.SuperByteBuffer;
import net.createmod.catnip.utility.Iterate; import net.createmod.catnip.utility.Iterate;
import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.MultiBufferSource;
@ -47,8 +47,8 @@ public class GaugeRenderer extends ShaftRenderer<GaugeBlockEntity> {
PartialModel partialModel = (type == Type.SPEED ? AllPartialModels.GAUGE_HEAD_SPEED : AllPartialModels.GAUGE_HEAD_STRESS); PartialModel partialModel = (type == Type.SPEED ? AllPartialModels.GAUGE_HEAD_SPEED : AllPartialModels.GAUGE_HEAD_STRESS);
SuperByteBuffer headBuffer = SuperByteBuffer headBuffer =
CachedPartialBuffers.partial(partialModel, gaugeState); CachedBuffers.partial(partialModel, gaugeState);
SuperByteBuffer dialBuffer = CachedPartialBuffers.partial(AllPartialModels.GAUGE_DIAL, gaugeState); SuperByteBuffer dialBuffer = CachedBuffers.partial(AllPartialModels.GAUGE_DIAL, gaugeState);
float dialPivot = 5.75f / 16; float dialPivot = 5.75f / 16;
float progress = Mth.lerp(partialTicks, gaugeBE.prevDialState, gaugeBE.dialState); float progress = Mth.lerp(partialTicks, gaugeBE.prevDialState, gaugeBE.dialState);

View file

@ -4,8 +4,8 @@ import com.jozufozu.flywheel.backend.Backend;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.simibubi.create.AllPartialModels; import com.simibubi.create.AllPartialModels;
import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer; import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer;
import com.simibubi.create.foundation.render.CachedPartialBuffers;
import net.createmod.catnip.render.CachedBuffers;
import net.createmod.catnip.render.SuperByteBuffer; import net.createmod.catnip.render.SuperByteBuffer;
import net.createmod.catnip.utility.Iterate; import net.createmod.catnip.utility.Iterate;
import net.createmod.ponder.utility.WorldTickHolder; import net.createmod.ponder.utility.WorldTickHolder;
@ -37,7 +37,7 @@ public class GearboxRenderer extends KineticBlockEntityRenderer<GearboxBlockEnti
if (boxAxis == axis) if (boxAxis == axis)
continue; continue;
SuperByteBuffer shaft = CachedPartialBuffers.partialFacing(AllPartialModels.SHAFT_HALF, be.getBlockState(), direction); SuperByteBuffer shaft = CachedBuffers.partialFacing(AllPartialModels.SHAFT_HALF, be.getBlockState(), direction);
float offset = getRotationOffsetForPosition(be, pos, axis); float offset = getRotationOffsetForPosition(be, pos, axis);
float angle = (time * be.getSpeed() * 3f / 10) % 360; float angle = (time * be.getSpeed() * 3f / 10) % 360;

View file

@ -7,8 +7,8 @@ import com.mojang.blaze3d.vertex.VertexConsumer;
import com.simibubi.create.AllPartialModels; import com.simibubi.create.AllPartialModels;
import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer; import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer;
import com.simibubi.create.content.kinetics.mechanicalArm.ArmBlockEntity.Phase; import com.simibubi.create.content.kinetics.mechanicalArm.ArmBlockEntity.Phase;
import com.simibubi.create.foundation.render.CachedPartialBuffers;
import net.createmod.catnip.render.CachedBuffers;
import net.createmod.catnip.render.SuperByteBuffer; import net.createmod.catnip.render.SuperByteBuffer;
import net.createmod.catnip.utility.AnimationTickHolder; import net.createmod.catnip.utility.AnimationTickHolder;
import net.createmod.catnip.utility.Iterate; import net.createmod.catnip.utility.Iterate;
@ -112,19 +112,19 @@ public class ArmRenderer extends KineticBlockEntityRenderer<ArmBlockEntity> {
private void renderArm(VertexConsumer builder, PoseStack ms, PoseStack msLocal, TransformStack msr, private void renderArm(VertexConsumer builder, PoseStack ms, PoseStack msLocal, TransformStack msr,
BlockState blockState, int color, float baseAngle, float lowerArmAngle, float upperArmAngle, float headAngle, BlockState blockState, int color, float baseAngle, float lowerArmAngle, float upperArmAngle, float headAngle,
boolean goggles, boolean inverted, boolean hasItem, boolean isBlockItem, int light) { boolean goggles, boolean inverted, boolean hasItem, boolean isBlockItem, int light) {
SuperByteBuffer base = CachedPartialBuffers.partial(AllPartialModels.ARM_BASE, blockState) SuperByteBuffer base = CachedBuffers.partial(AllPartialModels.ARM_BASE, blockState)
.light(light); .light(light);
SuperByteBuffer lowerBody = CachedPartialBuffers.partial(AllPartialModels.ARM_LOWER_BODY, blockState) SuperByteBuffer lowerBody = CachedBuffers.partial(AllPartialModels.ARM_LOWER_BODY, blockState)
.light(light); .light(light);
SuperByteBuffer upperBody = CachedPartialBuffers.partial(AllPartialModels.ARM_UPPER_BODY, blockState) SuperByteBuffer upperBody = CachedBuffers.partial(AllPartialModels.ARM_UPPER_BODY, blockState)
.light(light); .light(light);
SuperByteBuffer claw = CachedPartialBuffers SuperByteBuffer claw = CachedBuffers
.partial(goggles ? AllPartialModels.ARM_CLAW_BASE_GOGGLES : AllPartialModels.ARM_CLAW_BASE, blockState) .partial(goggles ? AllPartialModels.ARM_CLAW_BASE_GOGGLES : AllPartialModels.ARM_CLAW_BASE, blockState)
.light(light); .light(light);
SuperByteBuffer upperClawGrip = CachedPartialBuffers.partial(AllPartialModels.ARM_CLAW_GRIP_UPPER, SuperByteBuffer upperClawGrip = CachedBuffers.partial(AllPartialModels.ARM_CLAW_GRIP_UPPER,
blockState) blockState)
.light(light); .light(light);
SuperByteBuffer lowerClawGrip = CachedPartialBuffers.partial(AllPartialModels.ARM_CLAW_GRIP_LOWER, blockState) SuperByteBuffer lowerClawGrip = CachedBuffers.partial(AllPartialModels.ARM_CLAW_GRIP_LOWER, blockState)
.light(light); .light(light);
transformBase(msr, baseAngle); transformBase(msr, baseAngle);
@ -201,7 +201,7 @@ public class ArmRenderer extends KineticBlockEntityRenderer<ArmBlockEntity> {
@Override @Override
protected SuperByteBuffer getRotatedModel(ArmBlockEntity be, BlockState state) { protected SuperByteBuffer getRotatedModel(ArmBlockEntity be, BlockState state) {
return CachedPartialBuffers.partial(AllPartialModels.ARM_COG, state); return CachedBuffers.partial(AllPartialModels.ARM_COG, state);
} }
} }

View file

@ -2,8 +2,8 @@ package com.simibubi.create.content.kinetics.millstone;
import com.simibubi.create.AllPartialModels; import com.simibubi.create.AllPartialModels;
import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer; import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer;
import com.simibubi.create.foundation.render.CachedPartialBuffers;
import net.createmod.catnip.render.CachedBuffers;
import net.createmod.catnip.render.SuperByteBuffer; import net.createmod.catnip.render.SuperByteBuffer;
import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider;
import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.BlockState;
@ -16,7 +16,7 @@ public class MillstoneRenderer extends KineticBlockEntityRenderer<MillstoneBlock
@Override @Override
protected SuperByteBuffer getRotatedModel(MillstoneBlockEntity be, BlockState state) { protected SuperByteBuffer getRotatedModel(MillstoneBlockEntity be, BlockState state) {
return CachedPartialBuffers.partial(AllPartialModels.MILLSTONE_COG, state); return CachedBuffers.partial(AllPartialModels.MILLSTONE_COG, state);
} }
} }

View file

@ -5,8 +5,8 @@ import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.VertexConsumer; import com.mojang.blaze3d.vertex.VertexConsumer;
import com.simibubi.create.AllPartialModels; import com.simibubi.create.AllPartialModels;
import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer; import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer;
import com.simibubi.create.foundation.render.CachedPartialBuffers;
import net.createmod.catnip.render.CachedBuffers;
import net.createmod.catnip.render.SuperByteBuffer; import net.createmod.catnip.render.SuperByteBuffer;
import net.createmod.ponder.utility.WorldTickHolder; import net.createmod.ponder.utility.WorldTickHolder;
import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.MultiBufferSource;
@ -36,7 +36,7 @@ public class MechanicalMixerRenderer extends KineticBlockEntityRenderer<Mechanic
VertexConsumer vb = buffer.getBuffer(RenderType.solid()); VertexConsumer vb = buffer.getBuffer(RenderType.solid());
SuperByteBuffer superBuffer = CachedPartialBuffers.partial(AllPartialModels.SHAFTLESS_COGWHEEL, blockState); SuperByteBuffer superBuffer = CachedBuffers.partial(AllPartialModels.SHAFTLESS_COGWHEEL, blockState);
standardKineticRotationTransform(superBuffer, be, light).renderInto(ms, vb); standardKineticRotationTransform(superBuffer, be, light).renderInto(ms, vb);
float renderedHeadOffset = be.getRenderedHeadOffset(partialTicks); float renderedHeadOffset = be.getRenderedHeadOffset(partialTicks);
@ -44,13 +44,13 @@ public class MechanicalMixerRenderer extends KineticBlockEntityRenderer<Mechanic
float time = WorldTickHolder.getRenderTime(be.getLevel()); float time = WorldTickHolder.getRenderTime(be.getLevel());
float angle = ((time * speed * 6 / 10f) % 360) / 180 * (float) Math.PI; float angle = ((time * speed * 6 / 10f) % 360) / 180 * (float) Math.PI;
SuperByteBuffer poleRender = CachedPartialBuffers.partial(AllPartialModels.MECHANICAL_MIXER_POLE, blockState); SuperByteBuffer poleRender = CachedBuffers.partial(AllPartialModels.MECHANICAL_MIXER_POLE, blockState);
poleRender.translate(0, -renderedHeadOffset, 0) poleRender.translate(0, -renderedHeadOffset, 0)
.light(light) .light(light)
.renderInto(ms, vb); .renderInto(ms, vb);
VertexConsumer vbCutout = buffer.getBuffer(RenderType.cutoutMipped()); VertexConsumer vbCutout = buffer.getBuffer(RenderType.cutoutMipped());
SuperByteBuffer headRender = CachedPartialBuffers.partial(AllPartialModels.MECHANICAL_MIXER_HEAD, blockState); SuperByteBuffer headRender = CachedBuffers.partial(AllPartialModels.MECHANICAL_MIXER_HEAD, blockState);
headRender.rotateCentered(Direction.UP, angle) headRender.rotateCentered(Direction.UP, angle)
.translate(0, -renderedHeadOffset, 0) .translate(0, -renderedHeadOffset, 0)
.light(light) .light(light)

View file

@ -2,8 +2,8 @@ package com.simibubi.create.content.kinetics.motor;
import com.simibubi.create.AllPartialModels; import com.simibubi.create.AllPartialModels;
import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer; import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer;
import com.simibubi.create.foundation.render.CachedPartialBuffers;
import net.createmod.catnip.render.CachedBuffers;
import net.createmod.catnip.render.SuperByteBuffer; import net.createmod.catnip.render.SuperByteBuffer;
import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider;
import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.BlockState;
@ -16,7 +16,7 @@ public class CreativeMotorRenderer extends KineticBlockEntityRenderer<CreativeMo
@Override @Override
protected SuperByteBuffer getRotatedModel(CreativeMotorBlockEntity be, BlockState state) { protected SuperByteBuffer getRotatedModel(CreativeMotorBlockEntity be, BlockState state) {
return CachedPartialBuffers.partialFacing(AllPartialModels.SHAFT_HALF, state); return CachedBuffers.partialFacing(AllPartialModels.SHAFT_HALF, state);
} }
} }

View file

@ -6,8 +6,8 @@ import com.jozufozu.flywheel.backend.Backend;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.simibubi.create.AllPartialModels; import com.simibubi.create.AllPartialModels;
import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer; import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer;
import com.simibubi.create.foundation.render.CachedPartialBuffers;
import net.createmod.catnip.render.CachedBuffers;
import net.createmod.catnip.render.SuperByteBuffer; import net.createmod.catnip.render.SuperByteBuffer;
import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.RenderType;
@ -38,7 +38,7 @@ public class MechanicalPressRenderer extends KineticBlockEntityRenderer<Mechanic
float renderedHeadOffset = float renderedHeadOffset =
pressingBehaviour.getRenderedHeadOffset(partialTicks) * pressingBehaviour.mode.headOffset; pressingBehaviour.getRenderedHeadOffset(partialTicks) * pressingBehaviour.mode.headOffset;
SuperByteBuffer headRender = CachedPartialBuffers.partialFacing(AllPartialModels.MECHANICAL_PRESS_HEAD, blockState, SuperByteBuffer headRender = CachedBuffers.partialFacing(AllPartialModels.MECHANICAL_PRESS_HEAD, blockState,
blockState.getValue(HORIZONTAL_FACING)); blockState.getValue(HORIZONTAL_FACING));
headRender.translate(0, -renderedHeadOffset, 0) headRender.translate(0, -renderedHeadOffset, 0)
.light(light) .light(light)

View file

@ -15,9 +15,8 @@ import com.simibubi.create.content.kinetics.base.KineticBlockEntity;
import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer; import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer;
import com.simibubi.create.foundation.blockEntity.behaviour.filtering.FilteringRenderer; import com.simibubi.create.foundation.blockEntity.behaviour.filtering.FilteringRenderer;
import com.simibubi.create.foundation.blockEntity.renderer.SafeBlockEntityRenderer; import com.simibubi.create.foundation.blockEntity.renderer.SafeBlockEntityRenderer;
import com.simibubi.create.foundation.render.CachedPartialBuffers;
import net.createmod.catnip.render.CachedBlockBuffers; import net.createmod.catnip.render.CachedBuffers;
import net.createmod.catnip.render.SuperByteBuffer; import net.createmod.catnip.render.SuperByteBuffer;
import net.createmod.catnip.utility.VecHelper; import net.createmod.catnip.utility.VecHelper;
import net.createmod.catnip.utility.math.AngleHelper; import net.createmod.catnip.utility.math.AngleHelper;
@ -80,7 +79,7 @@ public class SawRenderer extends SafeBlockEntityRenderer<SawBlockEntity> {
rotate = true; rotate = true;
} }
SuperByteBuffer superBuffer = CachedPartialBuffers.partialFacing(partial, blockState); SuperByteBuffer superBuffer = CachedBuffers.partialFacing(partial, blockState);
if (rotate) { if (rotate) {
superBuffer.rotateCentered(Direction.UP, AngleHelper.rad(90)); superBuffer.rotateCentered(Direction.UP, AngleHelper.rad(90));
} }
@ -148,9 +147,9 @@ public class SawRenderer extends SafeBlockEntityRenderer<SawBlockEntity> {
if (state.getValue(FACING) if (state.getValue(FACING)
.getAxis() .getAxis()
.isHorizontal()) .isHorizontal())
return CachedPartialBuffers.partialFacing(AllPartialModels.SHAFT_HALF, return CachedBuffers.partialFacing(AllPartialModels.SHAFT_HALF,
state.rotate(be.getLevel(), be.getBlockPos(), Rotation.CLOCKWISE_180)); state.rotate(be.getLevel(), be.getBlockPos(), Rotation.CLOCKWISE_180));
return CachedBlockBuffers.block(KineticBlockEntityRenderer.KINETIC_BLOCK, return CachedBuffers.block(KineticBlockEntityRenderer.KINETIC_BLOCK,
getRenderedBlockState(be)); getRenderedBlockState(be));
} }
@ -179,14 +178,14 @@ public class SawRenderer extends SafeBlockEntityRenderer<SawBlockEntity> {
SuperByteBuffer superBuffer; SuperByteBuffer superBuffer;
if (SawBlock.isHorizontal(state)) { if (SawBlock.isHorizontal(state)) {
if (shouldAnimate) if (shouldAnimate)
superBuffer = CachedPartialBuffers.partial(AllPartialModels.SAW_BLADE_HORIZONTAL_ACTIVE, state); superBuffer = CachedBuffers.partial(AllPartialModels.SAW_BLADE_HORIZONTAL_ACTIVE, state);
else else
superBuffer = CachedPartialBuffers.partial(AllPartialModels.SAW_BLADE_HORIZONTAL_INACTIVE, state); superBuffer = CachedBuffers.partial(AllPartialModels.SAW_BLADE_HORIZONTAL_INACTIVE, state);
} else { } else {
if (shouldAnimate) if (shouldAnimate)
superBuffer = CachedPartialBuffers.partial(AllPartialModels.SAW_BLADE_VERTICAL_ACTIVE, state); superBuffer = CachedBuffers.partial(AllPartialModels.SAW_BLADE_VERTICAL_ACTIVE, state);
else else
superBuffer = CachedPartialBuffers.partial(AllPartialModels.SAW_BLADE_VERTICAL_INACTIVE, state); superBuffer = CachedBuffers.partial(AllPartialModels.SAW_BLADE_VERTICAL_INACTIVE, state);
} }
superBuffer.transform(matrices.getModel()) superBuffer.transform(matrices.getModel())

View file

@ -5,8 +5,8 @@ import com.mojang.blaze3d.vertex.PoseStack;
import com.simibubi.create.AllBlocks; import com.simibubi.create.AllBlocks;
import com.simibubi.create.AllPartialModels; import com.simibubi.create.AllPartialModels;
import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer; import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer;
import com.simibubi.create.foundation.render.CachedPartialBuffers;
import net.createmod.catnip.render.CachedBuffers;
import net.createmod.catnip.render.SuperByteBuffer; import net.createmod.catnip.render.SuperByteBuffer;
import net.createmod.ponder.utility.WorldTickHolder; import net.createmod.ponder.utility.WorldTickHolder;
import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.MultiBufferSource;
@ -41,12 +41,12 @@ public class BracketedKineticBlockEntityRenderer extends KineticBlockEntityRende
Axis axis = getRotationAxisOf(be); Axis axis = getRotationAxisOf(be);
Direction facing = Direction.fromAxisAndDirection(axis, AxisDirection.POSITIVE); Direction facing = Direction.fromAxisAndDirection(axis, AxisDirection.POSITIVE);
renderRotatingBuffer(be, renderRotatingBuffer(be,
CachedPartialBuffers.partialFacingVertical(AllPartialModels.SHAFTLESS_LARGE_COGWHEEL, be.getBlockState(), facing), CachedBuffers.partialFacingVertical(AllPartialModels.SHAFTLESS_LARGE_COGWHEEL, be.getBlockState(), facing),
ms, buffer.getBuffer(RenderType.solid()), light); ms, buffer.getBuffer(RenderType.solid()), light);
float angle = getAngleForLargeCogShaft(be, axis); float angle = getAngleForLargeCogShaft(be, axis);
SuperByteBuffer shaft = SuperByteBuffer shaft =
CachedPartialBuffers.partialFacingVertical(AllPartialModels.COGWHEEL_SHAFT, be.getBlockState(), facing); CachedBuffers.partialFacingVertical(AllPartialModels.COGWHEEL_SHAFT, be.getBlockState(), facing);
kineticRotationTransform(shaft, be, axis, angle, light); kineticRotationTransform(shaft, be, axis, angle, light);
shaft.renderInto(ms, buffer.getBuffer(RenderType.solid())); shaft.renderInto(ms, buffer.getBuffer(RenderType.solid()));

View file

@ -7,8 +7,8 @@ import com.simibubi.create.content.kinetics.base.IRotate;
import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer; import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer;
import com.simibubi.create.content.kinetics.simpleRelays.BracketedKineticBlockEntityRenderer; import com.simibubi.create.content.kinetics.simpleRelays.BracketedKineticBlockEntityRenderer;
import com.simibubi.create.content.kinetics.simpleRelays.SimpleKineticBlockEntity; import com.simibubi.create.content.kinetics.simpleRelays.SimpleKineticBlockEntity;
import com.simibubi.create.foundation.render.CachedPartialBuffers;
import net.createmod.catnip.render.CachedBuffers;
import net.createmod.catnip.render.SuperByteBuffer; import net.createmod.catnip.render.SuperByteBuffer;
import net.createmod.catnip.utility.Iterate; import net.createmod.catnip.utility.Iterate;
import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.MultiBufferSource;
@ -59,7 +59,7 @@ public class EncasedCogRenderer extends KineticBlockEntityRenderer<SimpleKinetic
for (Direction d : Iterate.directionsInAxis(getRotationAxisOf(be))) { for (Direction d : Iterate.directionsInAxis(getRotationAxisOf(be))) {
if (!def.hasShaftTowards(be.getLevel(), be.getBlockPos(), blockState, d)) if (!def.hasShaftTowards(be.getLevel(), be.getBlockPos(), blockState, d))
continue; continue;
SuperByteBuffer shaft = CachedPartialBuffers.partialFacing(AllPartialModels.SHAFT_HALF, be.getBlockState(), d); SuperByteBuffer shaft = CachedBuffers.partialFacing(AllPartialModels.SHAFT_HALF, be.getBlockState(), d);
kineticRotationTransform(shaft, be, axis, angle, light); kineticRotationTransform(shaft, be, axis, angle, light);
shaft.renderInto(ms, buffer.getBuffer(RenderType.solid())); shaft.renderInto(ms, buffer.getBuffer(RenderType.solid()));
} }
@ -67,7 +67,7 @@ public class EncasedCogRenderer extends KineticBlockEntityRenderer<SimpleKinetic
@Override @Override
protected SuperByteBuffer getRotatedModel(SimpleKineticBlockEntity be, BlockState state) { protected SuperByteBuffer getRotatedModel(SimpleKineticBlockEntity be, BlockState state) {
return CachedPartialBuffers.partialFacingVertical( return CachedBuffers.partialFacingVertical(
large ? AllPartialModels.SHAFTLESS_LARGE_COGWHEEL : AllPartialModels.SHAFTLESS_COGWHEEL, state, large ? AllPartialModels.SHAFTLESS_LARGE_COGWHEEL : AllPartialModels.SHAFTLESS_COGWHEEL, state,
Direction.fromAxisAndDirection(state.getValue(EncasedCogwheelBlock.AXIS), AxisDirection.POSITIVE)); Direction.fromAxisAndDirection(state.getValue(EncasedCogwheelBlock.AXIS), AxisDirection.POSITIVE));
} }

View file

@ -6,9 +6,8 @@ import com.mojang.blaze3d.vertex.VertexConsumer;
import com.simibubi.create.AllPartialModels; import com.simibubi.create.AllPartialModels;
import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer; import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer;
import com.simibubi.create.foundation.blockEntity.renderer.SmartBlockEntityRenderer; import com.simibubi.create.foundation.blockEntity.renderer.SmartBlockEntityRenderer;
import com.simibubi.create.foundation.render.CachedPartialBuffers;
import net.createmod.catnip.render.CachedBlockBuffers; import net.createmod.catnip.render.CachedBuffers;
import net.createmod.catnip.render.SuperByteBuffer; import net.createmod.catnip.render.SuperByteBuffer;
import net.minecraft.client.renderer.LevelRenderer; import net.minecraft.client.renderer.LevelRenderer;
import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.MultiBufferSource;
@ -44,7 +43,7 @@ public class SpeedControllerRenderer extends SmartBlockEntityRenderer<SpeedContr
BlockState blockState = blockEntity.getBlockState(); BlockState blockState = blockEntity.getBlockState();
boolean alongX = blockState.getValue(SpeedControllerBlock.HORIZONTAL_AXIS) == Axis.X; boolean alongX = blockState.getValue(SpeedControllerBlock.HORIZONTAL_AXIS) == Axis.X;
SuperByteBuffer bracket = CachedPartialBuffers.partial(AllPartialModels.SPEED_CONTROLLER_BRACKET, blockState); SuperByteBuffer bracket = CachedBuffers.partial(AllPartialModels.SPEED_CONTROLLER_BRACKET, blockState);
bracket.translate(0, 1, 0); bracket.translate(0, 1, 0);
bracket.rotateCentered(Direction.UP, bracket.rotateCentered(Direction.UP,
(float) (alongX ? Math.PI : Math.PI / 2)); (float) (alongX ? Math.PI : Math.PI / 2));
@ -53,7 +52,7 @@ public class SpeedControllerRenderer extends SmartBlockEntityRenderer<SpeedContr
} }
private SuperByteBuffer getRotatedModel(SpeedControllerBlockEntity blockEntity) { private SuperByteBuffer getRotatedModel(SpeedControllerBlockEntity blockEntity) {
return CachedBlockBuffers.block(KineticBlockEntityRenderer.KINETIC_BLOCK, return CachedBuffers.block(KineticBlockEntityRenderer.KINETIC_BLOCK,
KineticBlockEntityRenderer.shaft(KineticBlockEntityRenderer.getRotationAxisOf(blockEntity))); KineticBlockEntityRenderer.shaft(KineticBlockEntityRenderer.getRotationAxisOf(blockEntity)));
} }

View file

@ -7,8 +7,8 @@ import com.mojang.blaze3d.vertex.VertexConsumer;
import com.simibubi.create.AllPartialModels; import com.simibubi.create.AllPartialModels;
import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer; import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer;
import com.simibubi.create.foundation.blockEntity.renderer.SafeBlockEntityRenderer; import com.simibubi.create.foundation.blockEntity.renderer.SafeBlockEntityRenderer;
import com.simibubi.create.foundation.render.CachedPartialBuffers;
import net.createmod.catnip.render.CachedBuffers;
import net.createmod.catnip.render.SuperByteBuffer; import net.createmod.catnip.render.SuperByteBuffer;
import net.createmod.catnip.utility.math.AngleHelper; import net.createmod.catnip.utility.math.AngleHelper;
import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.MultiBufferSource;
@ -75,7 +75,7 @@ public class SteamEngineRenderer extends SafeBlockEntityRenderer<SteamEngineBloc
} }
private SuperByteBuffer transformed(PartialModel model, BlockState blockState, Direction facing, boolean roll90) { private SuperByteBuffer transformed(PartialModel model, BlockState blockState, Direction facing, boolean roll90) {
return CachedPartialBuffers.partial(model, blockState) return CachedBuffers.partial(model, blockState)
.centre() .centre()
.rotateY(AngleHelper.horizontalAngle(facing)) .rotateY(AngleHelper.horizontalAngle(facing))
.rotateX(AngleHelper.verticalAngle(facing) + 90) .rotateX(AngleHelper.verticalAngle(facing) + 90)

View file

@ -5,8 +5,8 @@ import com.mojang.blaze3d.vertex.PoseStack;
import com.simibubi.create.AllPartialModels; import com.simibubi.create.AllPartialModels;
import com.simibubi.create.content.kinetics.base.IRotate; import com.simibubi.create.content.kinetics.base.IRotate;
import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer; import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer;
import com.simibubi.create.foundation.render.CachedPartialBuffers;
import net.createmod.catnip.render.CachedBuffers;
import net.createmod.catnip.render.SuperByteBuffer; import net.createmod.catnip.render.SuperByteBuffer;
import net.createmod.catnip.utility.Iterate; import net.createmod.catnip.utility.Iterate;
import net.createmod.ponder.utility.WorldTickHolder; import net.createmod.ponder.utility.WorldTickHolder;
@ -48,7 +48,7 @@ public class SplitShaftRenderer extends KineticBlockEntityRenderer<SplitShaftBlo
angle = angle / 180f * (float) Math.PI; angle = angle / 180f * (float) Math.PI;
SuperByteBuffer superByteBuffer = SuperByteBuffer superByteBuffer =
CachedPartialBuffers.partialFacing(AllPartialModels.SHAFT_HALF, be.getBlockState(), direction); CachedBuffers.partialFacing(AllPartialModels.SHAFT_HALF, be.getBlockState(), direction);
kineticRotationTransform(superByteBuffer, be, axis, angle, light); kineticRotationTransform(superByteBuffer, be, axis, angle, light);
superByteBuffer.renderInto(ms, buffer.getBuffer(RenderType.solid())); superByteBuffer.renderInto(ms, buffer.getBuffer(RenderType.solid()));
} }

View file

@ -6,8 +6,8 @@ import com.jozufozu.flywheel.core.model.BlockModel;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.simibubi.create.content.kinetics.base.CutoutRotatingInstance; import com.simibubi.create.content.kinetics.base.CutoutRotatingInstance;
import com.simibubi.create.content.kinetics.base.flwdata.RotatingData; import com.simibubi.create.content.kinetics.base.flwdata.RotatingData;
import com.simibubi.create.foundation.render.CachedPartialBuffers;
import net.createmod.catnip.render.CachedBuffers;
import net.minecraft.client.resources.model.BakedModel; import net.minecraft.client.resources.model.BakedModel;
import net.minecraft.core.Direction; import net.minecraft.core.Direction;
import net.minecraft.core.Direction.AxisDirection; import net.minecraft.core.Direction.AxisDirection;
@ -48,7 +48,7 @@ public class WaterWheelInstance<T extends WaterWheelBlockEntity> extends CutoutR
} else { } else {
dir = state.getValue(WaterWheelBlock.FACING); dir = state.getValue(WaterWheelBlock.FACING);
} }
PoseStack transform = CachedPartialBuffers.rotateToFaceVertical(dir).get(); PoseStack transform = CachedBuffers.rotateToFaceVertical(dir).get();
return BlockModel.of(model, Blocks.AIR.defaultBlockState(), transform); return BlockModel.of(model, Blocks.AIR.defaultBlockState(), transform);
}); });
} }

View file

@ -10,10 +10,10 @@ import com.mojang.blaze3d.vertex.PoseStack;
import com.simibubi.create.AllPartialModels; import com.simibubi.create.AllPartialModels;
import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer; import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer;
import com.simibubi.create.foundation.model.BakedModelHelper; import com.simibubi.create.foundation.model.BakedModelHelper;
import com.simibubi.create.foundation.render.CachedPartialBuffers;
import it.unimi.dsi.fastutil.objects.Reference2ReferenceOpenHashMap; import it.unimi.dsi.fastutil.objects.Reference2ReferenceOpenHashMap;
import net.createmod.catnip.platform.CatnipServices; import net.createmod.catnip.platform.CatnipServices;
import net.createmod.catnip.render.CachedBuffers;
import net.createmod.catnip.render.SuperBufferFactory; import net.createmod.catnip.render.SuperBufferFactory;
import net.createmod.catnip.render.SuperByteBuffer; import net.createmod.catnip.render.SuperByteBuffer;
import net.createmod.catnip.render.SuperByteBufferCache; import net.createmod.catnip.render.SuperByteBufferCache;
@ -69,7 +69,7 @@ public class WaterWheelRenderer<T extends WaterWheelBlockEntity> extends Kinetic
} else { } else {
dir = state1.getValue(WaterWheelBlock.FACING); dir = state1.getValue(WaterWheelBlock.FACING);
} }
PoseStack transform = CachedPartialBuffers.rotateToFaceVertical(dir).get(); PoseStack transform = CachedBuffers.rotateToFaceVertical(dir).get();
return SuperBufferFactory.getInstance().createForBlock(model, Blocks.AIR.defaultBlockState(), transform); return SuperBufferFactory.getInstance().createForBlock(model, Blocks.AIR.defaultBlockState(), transform);
}); });
} }

View file

@ -1,19 +1,19 @@
package com.simibubi.create.content.logistics.depot; package com.simibubi.create.content.logistics.depot;
import com.jozufozu.flywheel.backend.Backend; import com.jozufozu.flywheel.backend.Backend;
import com.jozufozu.flywheel.util.transform.Rotate;
import com.jozufozu.flywheel.util.transform.TransformStack; import com.jozufozu.flywheel.util.transform.TransformStack;
import com.jozufozu.flywheel.util.transform.Translate;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.VertexConsumer; import com.mojang.blaze3d.vertex.VertexConsumer;
import com.simibubi.create.AllPartialModels; import com.simibubi.create.AllPartialModels;
import com.simibubi.create.content.kinetics.base.KineticBlockEntity; import com.simibubi.create.content.kinetics.base.KineticBlockEntity;
import com.simibubi.create.content.kinetics.base.ShaftRenderer; import com.simibubi.create.content.kinetics.base.ShaftRenderer;
import com.simibubi.create.foundation.render.CachedPartialBuffers;
import net.createmod.catnip.render.CachedBuffers;
import net.createmod.catnip.render.SuperByteBuffer; import net.createmod.catnip.render.SuperByteBuffer;
import net.createmod.catnip.utility.IntAttached; import net.createmod.catnip.utility.IntAttached;
import net.createmod.catnip.utility.VecHelper; import net.createmod.catnip.utility.VecHelper;
import net.createmod.catnip.utility.flw.Rotate;
import net.createmod.catnip.utility.flw.Translate;
import net.createmod.catnip.utility.math.AngleHelper; import net.createmod.catnip.utility.math.AngleHelper;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.MultiBufferSource;
@ -46,7 +46,7 @@ public class EjectorRenderer extends ShaftRenderer<EjectorBlockEntity> {
float angle = lidProgress * 70; float angle = lidProgress * 70;
if (!Backend.canUseInstancing(be.getLevel())) { if (!Backend.canUseInstancing(be.getLevel())) {
SuperByteBuffer model = CachedPartialBuffers.partial(AllPartialModels.EJECTOR_TOP, be.getBlockState()); SuperByteBuffer model = CachedBuffers.partial(AllPartialModels.EJECTOR_TOP, be.getBlockState());
applyLidAngle(be, angle, model); applyLidAngle(be, angle, model);
model.light(light) model.light(light)
.renderInto(ms, vertexBuilder); .renderInto(ms, vertexBuilder);
@ -80,7 +80,7 @@ public class EjectorRenderer extends ShaftRenderer<EjectorBlockEntity> {
return; return;
ms.pushPose(); ms.pushPose();
//applyLidAngle(be, angle, msr);//TODO flw applyLidAngle(be, angle, msr);
msr.centre() msr.centre()
.rotateY(-180 - AngleHelper.horizontalAngle(be.getBlockState() .rotateY(-180 - AngleHelper.horizontalAngle(be.getBlockState()
.getValue(EjectorBlock.HORIZONTAL_FACING))) .getValue(EjectorBlock.HORIZONTAL_FACING)))

View file

@ -7,8 +7,8 @@ import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.VertexConsumer; import com.mojang.blaze3d.vertex.VertexConsumer;
import com.simibubi.create.AllPartialModels; import com.simibubi.create.AllPartialModels;
import com.simibubi.create.foundation.blockEntity.renderer.SmartBlockEntityRenderer; import com.simibubi.create.foundation.blockEntity.renderer.SmartBlockEntityRenderer;
import com.simibubi.create.foundation.render.CachedPartialBuffers;
import net.createmod.catnip.render.CachedBuffers;
import net.createmod.catnip.render.SuperByteBuffer; import net.createmod.catnip.render.SuperByteBuffer;
import net.createmod.catnip.utility.VecHelper; import net.createmod.catnip.utility.VecHelper;
import net.createmod.catnip.utility.math.AngleHelper; import net.createmod.catnip.utility.math.AngleHelper;
@ -37,7 +37,7 @@ public class FunnelRenderer extends SmartBlockEntityRenderer<FunnelBlockEntity>
VertexConsumer vb = buffer.getBuffer(RenderType.solid()); VertexConsumer vb = buffer.getBuffer(RenderType.solid());
PartialModel partialModel = (blockState.getBlock() instanceof FunnelBlock ? AllPartialModels.FUNNEL_FLAP PartialModel partialModel = (blockState.getBlock() instanceof FunnelBlock ? AllPartialModels.FUNNEL_FLAP
: AllPartialModels.BELT_FUNNEL_FLAP); : AllPartialModels.BELT_FUNNEL_FLAP);
SuperByteBuffer flapBuffer = CachedPartialBuffers.partial(partialModel, blockState); SuperByteBuffer flapBuffer = CachedBuffers.partial(partialModel, blockState);
Vec3 pivot = VecHelper.voxelSpace(0, 10, 9.5f); Vec3 pivot = VecHelper.voxelSpace(0, 10, 9.5f);
TransformStack msr = TransformStack.cast(ms); TransformStack msr = TransformStack.cast(ms);

View file

@ -6,8 +6,8 @@ import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.VertexConsumer; import com.mojang.blaze3d.vertex.VertexConsumer;
import com.simibubi.create.AllPartialModels; import com.simibubi.create.AllPartialModels;
import com.simibubi.create.foundation.blockEntity.renderer.SmartBlockEntityRenderer; import com.simibubi.create.foundation.blockEntity.renderer.SmartBlockEntityRenderer;
import com.simibubi.create.foundation.render.CachedPartialBuffers;
import net.createmod.catnip.render.CachedBuffers;
import net.createmod.catnip.render.SuperByteBuffer; import net.createmod.catnip.render.SuperByteBuffer;
import net.createmod.catnip.utility.Iterate; import net.createmod.catnip.utility.Iterate;
import net.createmod.catnip.utility.VecHelper; import net.createmod.catnip.utility.VecHelper;
@ -34,7 +34,7 @@ public class BeltTunnelRenderer extends SmartBlockEntityRenderer<BeltTunnelBlock
if (Backend.canUseInstancing(be.getLevel())) if (Backend.canUseInstancing(be.getLevel()))
return; return;
SuperByteBuffer flapBuffer = CachedPartialBuffers.partial(AllPartialModels.BELT_TUNNEL_FLAP, be.getBlockState()); SuperByteBuffer flapBuffer = CachedBuffers.partial(AllPartialModels.BELT_TUNNEL_FLAP, be.getBlockState());
VertexConsumer vb = buffer.getBuffer(RenderType.solid()); VertexConsumer vb = buffer.getBuffer(RenderType.solid());
Vec3 pivot = VecHelper.voxelSpace(0, 10, 1f); Vec3 pivot = VecHelper.voxelSpace(0, 10, 1f);
TransformStack msr = TransformStack.cast(ms); TransformStack msr = TransformStack.cast(ms);

View file

@ -12,8 +12,8 @@ import com.simibubi.create.content.contraptions.behaviour.MovementContext;
import com.simibubi.create.content.contraptions.render.ContraptionMatrices; import com.simibubi.create.content.contraptions.render.ContraptionMatrices;
import com.simibubi.create.content.processing.burner.BlazeBurnerBlock.HeatLevel; import com.simibubi.create.content.processing.burner.BlazeBurnerBlock.HeatLevel;
import com.simibubi.create.foundation.blockEntity.renderer.SafeBlockEntityRenderer; import com.simibubi.create.foundation.blockEntity.renderer.SafeBlockEntityRenderer;
import com.simibubi.create.foundation.render.CachedPartialBuffers;
import net.createmod.catnip.render.CachedBuffers;
import net.createmod.catnip.render.SpriteShiftEntry; import net.createmod.catnip.render.SpriteShiftEntry;
import net.createmod.catnip.render.SuperByteBuffer; import net.createmod.catnip.render.SuperByteBuffer;
import net.createmod.catnip.utility.animation.LerpedFloat; import net.createmod.catnip.utility.animation.LerpedFloat;
@ -117,7 +117,7 @@ public class BlazeBurnerRenderer extends SafeBlockEntityRenderer<BlazeBurnerBloc
uScroll = uScroll - Math.floor(uScroll); uScroll = uScroll - Math.floor(uScroll);
uScroll = uScroll * spriteWidth / 2; uScroll = uScroll * spriteWidth / 2;
SuperByteBuffer flameBuffer = CachedPartialBuffers.partial(AllPartialModels.BLAZE_BURNER_FLAME, blockState); SuperByteBuffer flameBuffer = CachedBuffers.partial(AllPartialModels.BLAZE_BURNER_FLAME, blockState);
if (modelTransform != null) if (modelTransform != null)
flameBuffer.transform(modelTransform); flameBuffer.transform(modelTransform);
flameBuffer.shiftUVScrolling(spriteShift, (float) uScroll, (float) vScroll); flameBuffer.shiftUVScrolling(spriteShift, (float) uScroll, (float) vScroll);
@ -134,7 +134,7 @@ public class BlazeBurnerRenderer extends SafeBlockEntityRenderer<BlazeBurnerBloc
blazeModel = AllPartialModels.BLAZE_INERT; blazeModel = AllPartialModels.BLAZE_INERT;
} }
SuperByteBuffer blazeBuffer = CachedPartialBuffers.partial(blazeModel, blockState); SuperByteBuffer blazeBuffer = CachedBuffers.partial(blazeModel, blockState);
if (modelTransform != null) if (modelTransform != null)
blazeBuffer.transform(modelTransform); blazeBuffer.transform(modelTransform);
blazeBuffer.translate(0, headY, 0); blazeBuffer.translate(0, headY, 0);
@ -144,7 +144,7 @@ public class BlazeBurnerRenderer extends SafeBlockEntityRenderer<BlazeBurnerBloc
PartialModel gogglesModel = blazeModel == AllPartialModels.BLAZE_INERT PartialModel gogglesModel = blazeModel == AllPartialModels.BLAZE_INERT
? AllPartialModels.BLAZE_GOGGLES_SMALL : AllPartialModels.BLAZE_GOGGLES; ? AllPartialModels.BLAZE_GOGGLES_SMALL : AllPartialModels.BLAZE_GOGGLES;
SuperByteBuffer gogglesBuffer = CachedPartialBuffers.partial(gogglesModel, blockState); SuperByteBuffer gogglesBuffer = CachedBuffers.partial(gogglesModel, blockState);
if (modelTransform != null) if (modelTransform != null)
gogglesBuffer.transform(modelTransform); gogglesBuffer.transform(modelTransform);
gogglesBuffer.translate(0, headY + 8 / 16f, 0); gogglesBuffer.translate(0, headY + 8 / 16f, 0);
@ -152,7 +152,7 @@ public class BlazeBurnerRenderer extends SafeBlockEntityRenderer<BlazeBurnerBloc
} }
if (drawHat) { if (drawHat) {
SuperByteBuffer hatBuffer = CachedPartialBuffers.partial(AllPartialModels.TRAIN_HAT, blockState); SuperByteBuffer hatBuffer = CachedBuffers.partial(AllPartialModels.TRAIN_HAT, blockState);
if (modelTransform != null) if (modelTransform != null)
hatBuffer.transform(modelTransform); hatBuffer.transform(modelTransform);
hatBuffer.translate(0, headY, 0); hatBuffer.translate(0, headY, 0);
@ -177,14 +177,14 @@ public class BlazeBurnerRenderer extends SafeBlockEntityRenderer<BlazeBurnerBloc
PartialModel rodsModel2 = heatLevel == HeatLevel.SEETHING ? AllPartialModels.BLAZE_BURNER_SUPER_RODS_2 PartialModel rodsModel2 = heatLevel == HeatLevel.SEETHING ? AllPartialModels.BLAZE_BURNER_SUPER_RODS_2
: AllPartialModels.BLAZE_BURNER_RODS_2; : AllPartialModels.BLAZE_BURNER_RODS_2;
SuperByteBuffer rodsBuffer = CachedPartialBuffers.partial(rodsModel, blockState); SuperByteBuffer rodsBuffer = CachedBuffers.partial(rodsModel, blockState);
if (modelTransform != null) if (modelTransform != null)
rodsBuffer.transform(modelTransform); rodsBuffer.transform(modelTransform);
rodsBuffer.translate(0, offset1 + animation + .125f, 0) rodsBuffer.translate(0, offset1 + animation + .125f, 0)
.light(LightTexture.FULL_BRIGHT) .light(LightTexture.FULL_BRIGHT)
.renderInto(ms, solid); .renderInto(ms, solid);
SuperByteBuffer rodsBuffer2 = CachedPartialBuffers.partial(rodsModel2, blockState); SuperByteBuffer rodsBuffer2 = CachedBuffers.partial(rodsModel2, blockState);
if (modelTransform != null) if (modelTransform != null)
rodsBuffer2.transform(modelTransform); rodsBuffer2.transform(modelTransform);
rodsBuffer2.translate(0, offset2 + animation - 3 / 16f, 0) rodsBuffer2.translate(0, offset2 + animation - 3 / 16f, 0)

View file

@ -5,8 +5,8 @@ import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.VertexConsumer; import com.mojang.blaze3d.vertex.VertexConsumer;
import com.simibubi.create.AllPartialModels; import com.simibubi.create.AllPartialModels;
import com.simibubi.create.foundation.blockEntity.renderer.SafeBlockEntityRenderer; import com.simibubi.create.foundation.blockEntity.renderer.SafeBlockEntityRenderer;
import com.simibubi.create.foundation.render.CachedPartialBuffers;
import net.createmod.catnip.render.CachedBuffers;
import net.createmod.catnip.render.SuperByteBuffer; import net.createmod.catnip.render.SuperByteBuffer;
import net.createmod.catnip.utility.math.AngleHelper; import net.createmod.catnip.utility.math.AngleHelper;
import net.createmod.catnip.utility.theme.Color; import net.createmod.catnip.utility.theme.Color;
@ -34,7 +34,7 @@ public class AnalogLeverRenderer extends SafeBlockEntityRenderer<AnalogLeverBloc
VertexConsumer vb = buffer.getBuffer(RenderType.solid()); VertexConsumer vb = buffer.getBuffer(RenderType.solid());
// Handle // Handle
SuperByteBuffer handle = CachedPartialBuffers.partial(AllPartialModels.ANALOG_LEVER_HANDLE, leverState); SuperByteBuffer handle = CachedBuffers.partial(AllPartialModels.ANALOG_LEVER_HANDLE, leverState);
float angle = (float) ((state / 15) * 90 / 180 * Math.PI); float angle = (float) ((state / 15) * 90 / 180 * Math.PI);
transform(handle, leverState).translate(1 / 2f, 1 / 16f, 1 / 2f) transform(handle, leverState).translate(1 / 2f, 1 / 16f, 1 / 2f)
.rotate(Direction.EAST, angle) .rotate(Direction.EAST, angle)
@ -44,7 +44,7 @@ public class AnalogLeverRenderer extends SafeBlockEntityRenderer<AnalogLeverBloc
// Indicator // Indicator
int color = Color.mixColors(0x2C0300, 0xCD0000, state / 15f); int color = Color.mixColors(0x2C0300, 0xCD0000, state / 15f);
SuperByteBuffer indicator = transform(CachedPartialBuffers.partial(AllPartialModels.ANALOG_LEVER_INDICATOR, leverState), leverState); SuperByteBuffer indicator = transform(CachedBuffers.partial(AllPartialModels.ANALOG_LEVER_INDICATOR, leverState), leverState);
indicator.light(light) indicator.light(light)
.color(color) .color(color)
.renderInto(ms, vb); .renderInto(ms, vb);

View file

@ -2,8 +2,8 @@ package com.simibubi.create.content.redstone.diodes;
import com.simibubi.create.AllPartialModels; import com.simibubi.create.AllPartialModels;
import com.simibubi.create.foundation.blockEntity.renderer.ColoredOverlayBlockEntityRenderer; import com.simibubi.create.foundation.blockEntity.renderer.ColoredOverlayBlockEntityRenderer;
import com.simibubi.create.foundation.render.CachedPartialBuffers;
import net.createmod.catnip.render.CachedBuffers;
import net.createmod.catnip.render.SuperByteBuffer; import net.createmod.catnip.render.SuperByteBuffer;
import net.createmod.catnip.utility.theme.Color; import net.createmod.catnip.utility.theme.Color;
import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider;
@ -21,7 +21,7 @@ public class BrassDiodeRenderer extends ColoredOverlayBlockEntityRenderer<BrassD
@Override @Override
protected SuperByteBuffer getOverlayBuffer(BrassDiodeBlockEntity be) { protected SuperByteBuffer getOverlayBuffer(BrassDiodeBlockEntity be) {
return CachedPartialBuffers.partial(AllPartialModels.FLEXPEATER_INDICATOR, be.getBlockState()); return CachedBuffers.partial(AllPartialModels.FLEXPEATER_INDICATOR, be.getBlockState());
} }
} }

View file

@ -4,9 +4,9 @@ import com.jozufozu.flywheel.util.transform.TransformStack;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.simibubi.create.AllPartialModels; import com.simibubi.create.AllPartialModels;
import com.simibubi.create.foundation.blockEntity.renderer.SafeBlockEntityRenderer; import com.simibubi.create.foundation.blockEntity.renderer.SafeBlockEntityRenderer;
import com.simibubi.create.foundation.render.CachedPartialBuffers;
import com.simibubi.create.foundation.render.RenderTypes; import com.simibubi.create.foundation.render.RenderTypes;
import net.createmod.catnip.render.CachedBuffers;
import net.createmod.catnip.utility.math.AngleHelper; import net.createmod.catnip.utility.math.AngleHelper;
import net.minecraft.client.renderer.LightTexture; import net.minecraft.client.renderer.LightTexture;
import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.MultiBufferSource;
@ -49,11 +49,11 @@ public class DisplayLinkRenderer extends SafeBlockEntityRenderer<DisplayLinkBloc
.rotateX(-AngleHelper.verticalAngle(face) - 90) .rotateX(-AngleHelper.verticalAngle(face) - 90)
.unCentre(); .unCentre();
CachedPartialBuffers.partial(AllPartialModels.DISPLAY_LINK_TUBE, blockState) CachedBuffers.partial(AllPartialModels.DISPLAY_LINK_TUBE, blockState)
.light(LightTexture.FULL_BRIGHT) .light(LightTexture.FULL_BRIGHT)
.renderInto(ms, buffer.getBuffer(RenderType.translucent())); .renderInto(ms, buffer.getBuffer(RenderType.translucent()));
CachedPartialBuffers.partial(AllPartialModels.DISPLAY_LINK_GLOW, blockState) CachedBuffers.partial(AllPartialModels.DISPLAY_LINK_GLOW, blockState)
.light(LightTexture.FULL_BRIGHT) .light(LightTexture.FULL_BRIGHT)
.color(color, color, color, 255) .color(color, color, color, 255)
.disableDiffuse() .disableDiffuse()

View file

@ -7,10 +7,10 @@ import com.mojang.blaze3d.vertex.PoseStack;
import com.simibubi.create.AllPartialModels; import com.simibubi.create.AllPartialModels;
import com.simibubi.create.content.redstone.nixieTube.DoubleFaceAttachedBlock.DoubleAttachFace; import com.simibubi.create.content.redstone.nixieTube.DoubleFaceAttachedBlock.DoubleAttachFace;
import com.simibubi.create.foundation.blockEntity.renderer.SafeBlockEntityRenderer; import com.simibubi.create.foundation.blockEntity.renderer.SafeBlockEntityRenderer;
import com.simibubi.create.foundation.render.CachedPartialBuffers;
import com.simibubi.create.foundation.render.RenderTypes; import com.simibubi.create.foundation.render.RenderTypes;
import com.simibubi.create.foundation.utility.DyeHelper; import com.simibubi.create.foundation.utility.DyeHelper;
import net.createmod.catnip.render.CachedBuffers;
import net.createmod.catnip.utility.Couple; import net.createmod.catnip.utility.Couple;
import net.createmod.catnip.utility.Iterate; import net.createmod.catnip.utility.Iterate;
import net.createmod.catnip.utility.math.AngleHelper; import net.createmod.catnip.utility.math.AngleHelper;
@ -137,7 +137,7 @@ public class NixieTubeRenderer extends SafeBlockEntityRenderer<NixieTubeBlockEnt
boolean invertTubes = boolean invertTubes =
facing == Direction.DOWN || blockState.getValue(NixieTubeBlock.FACE) == DoubleAttachFace.WALL_REVERSED; facing == Direction.DOWN || blockState.getValue(NixieTubeBlock.FACE) == DoubleAttachFace.WALL_REVERSED;
CachedPartialBuffers.partial(AllPartialModels.SIGNAL_PANEL, blockState) CachedBuffers.partial(AllPartialModels.SIGNAL_PANEL, blockState)
.light(light) .light(light)
.renderInto(ms, buffer.getBuffer(RenderType.solid())); .renderInto(ms, buffer.getBuffer(RenderType.solid()));
@ -166,13 +166,13 @@ public class NixieTubeRenderer extends SafeBlockEntityRenderer<NixieTubeBlockEnt
float longSide = yellow ? 1 : 4; float longSide = yellow ? 1 : 4;
float longSideGlow = yellow ? 2 : 5.125f; float longSideGlow = yellow ? 2 : 5.125f;
CachedPartialBuffers.partial(AllPartialModels.SIGNAL_WHITE_CUBE, blockState) CachedBuffers.partial(AllPartialModels.SIGNAL_WHITE_CUBE, blockState)
.light(0xf000f0) .light(0xf000f0)
.disableDiffuse() .disableDiffuse()
.scale(vert ? longSide : 1, vert ? 1 : longSide, 1) .scale(vert ? longSide : 1, vert ? 1 : longSide, 1)
.renderInto(ms, buffer.getBuffer(RenderType.translucent())); .renderInto(ms, buffer.getBuffer(RenderType.translucent()));
CachedPartialBuffers CachedBuffers
.partial( .partial(
first ? AllPartialModels.SIGNAL_RED_GLOW first ? AllPartialModels.SIGNAL_RED_GLOW
: yellow ? AllPartialModels.SIGNAL_YELLOW_GLOW : AllPartialModels.SIGNAL_WHITE_GLOW, : yellow ? AllPartialModels.SIGNAL_YELLOW_GLOW : AllPartialModels.SIGNAL_WHITE_GLOW,
@ -183,7 +183,7 @@ public class NixieTubeRenderer extends SafeBlockEntityRenderer<NixieTubeBlockEnt
.renderInto(ms, buffer.getBuffer(RenderTypes.getAdditive())); .renderInto(ms, buffer.getBuffer(RenderTypes.getAdditive()));
} }
CachedPartialBuffers CachedBuffers
.partial(first ? AllPartialModels.SIGNAL_RED .partial(first ? AllPartialModels.SIGNAL_RED
: yellow ? AllPartialModels.SIGNAL_YELLOW : AllPartialModels.SIGNAL_WHITE, blockState) : yellow ? AllPartialModels.SIGNAL_YELLOW : AllPartialModels.SIGNAL_WHITE, blockState)
.light(0xF000F0) .light(0xF000F0)

View file

@ -13,8 +13,8 @@ import com.simibubi.create.content.schematics.cannon.LaunchedItem.ForBelt;
import com.simibubi.create.content.schematics.cannon.LaunchedItem.ForBlockState; import com.simibubi.create.content.schematics.cannon.LaunchedItem.ForBlockState;
import com.simibubi.create.content.schematics.cannon.LaunchedItem.ForEntity; import com.simibubi.create.content.schematics.cannon.LaunchedItem.ForEntity;
import com.simibubi.create.foundation.blockEntity.renderer.SafeBlockEntityRenderer; import com.simibubi.create.foundation.blockEntity.renderer.SafeBlockEntityRenderer;
import com.simibubi.create.foundation.render.CachedPartialBuffers;
import net.createmod.catnip.render.CachedBuffers;
import net.createmod.catnip.render.SuperByteBuffer; import net.createmod.catnip.render.SuperByteBuffer;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.MultiBufferSource;
@ -57,14 +57,14 @@ public class SchematicannonRenderer extends SafeBlockEntityRenderer<Schematicann
VertexConsumer vb = buffer.getBuffer(RenderType.solid()); VertexConsumer vb = buffer.getBuffer(RenderType.solid());
SuperByteBuffer connector = CachedPartialBuffers.partial(AllPartialModels.SCHEMATICANNON_CONNECTOR, state); SuperByteBuffer connector = CachedBuffers.partial(AllPartialModels.SCHEMATICANNON_CONNECTOR, state);
connector.translate(.5f, 0, .5f); connector.translate(.5f, 0, .5f);
connector.rotate(Direction.UP, (float) ((yaw + 90) / 180 * Math.PI)); connector.rotate(Direction.UP, (float) ((yaw + 90) / 180 * Math.PI));
connector.translate(-.5f, 0, -.5f); connector.translate(-.5f, 0, -.5f);
connector.light(light) connector.light(light)
.renderInto(ms, vb); .renderInto(ms, vb);
SuperByteBuffer pipe = CachedPartialBuffers.partial(AllPartialModels.SCHEMATICANNON_PIPE, state); SuperByteBuffer pipe = CachedBuffers.partial(AllPartialModels.SCHEMATICANNON_PIPE, state);
pipe.translate(.5f, 15 / 16f, .5f); pipe.translate(.5f, 15 / 16f, .5f);
pipe.rotate(Direction.UP, (float) ((yaw + 90) / 180 * Math.PI)); pipe.rotate(Direction.UP, (float) ((yaw + 90) / 180 * Math.PI));
pipe.rotate(Direction.SOUTH, (float) (pitch / 180 * Math.PI)); pipe.rotate(Direction.SOUTH, (float) (pitch / 180 * Math.PI));

View file

@ -12,8 +12,8 @@ import com.mojang.blaze3d.vertex.DefaultVertexFormat;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.VertexFormat; import com.mojang.blaze3d.vertex.VertexFormat;
import com.simibubi.create.foundation.render.BlockEntityRenderHelper; import com.simibubi.create.foundation.render.BlockEntityRenderHelper;
import com.simibubi.create.foundation.render.FlwSuperByteBuffer;
import net.createmod.catnip.render.ShadeSpearatingSuperByteBuffer;
import net.createmod.catnip.render.SuperByteBuffer; import net.createmod.catnip.render.SuperByteBuffer;
import net.createmod.catnip.render.SuperRenderTypeBuffer; import net.createmod.catnip.render.SuperRenderTypeBuffer;
import net.createmod.catnip.utility.worldWrappers.SchematicWorld; import net.createmod.catnip.utility.worldWrappers.SchematicWorld;
@ -136,7 +136,7 @@ public class SchematicRenderer {
renderWorld.renderMode = false; renderWorld.renderMode = false;
SuperByteBuffer sbb = new FlwSuperByteBuffer(bufferedData); SuperByteBuffer sbb = new ShadeSpearatingSuperByteBuffer(bufferedData);
bufferedData.release(); bufferedData.release();
return sbb; return sbb;
} }

View file

@ -12,17 +12,16 @@ import com.jozufozu.flywheel.api.MaterialManager;
import com.jozufozu.flywheel.core.Materials; import com.jozufozu.flywheel.core.Materials;
import com.jozufozu.flywheel.core.PartialModel; import com.jozufozu.flywheel.core.PartialModel;
import com.jozufozu.flywheel.core.materials.model.ModelData; import com.jozufozu.flywheel.core.materials.model.ModelData;
import com.jozufozu.flywheel.util.transform.Transform;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.VertexConsumer; import com.mojang.blaze3d.vertex.VertexConsumer;
import com.mojang.math.Matrix3f; import com.mojang.math.Matrix3f;
import com.mojang.math.Matrix4f; import com.mojang.math.Matrix4f;
import com.mojang.math.Quaternion; import com.mojang.math.Quaternion;
import com.simibubi.create.content.trains.entity.CarriageBogey; import com.simibubi.create.content.trains.entity.CarriageBogey;
import com.simibubi.create.foundation.render.CachedPartialBuffers;
import net.createmod.catnip.render.CachedBlockBuffers; import net.createmod.catnip.render.CachedBuffers;
import net.createmod.catnip.render.SuperByteBuffer; import net.createmod.catnip.render.SuperByteBuffer;
import net.createmod.catnip.utility.flw.Transform;
import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.CompoundTag;
import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.Blocks;
import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.BlockState;
@ -197,7 +196,7 @@ public abstract class BogeyRenderer {
.mapToObj(i -> materialManager.defaultSolid() .mapToObj(i -> materialManager.defaultSolid()
.material(Materials.TRANSFORMED) .material(Materials.TRANSFORMED)
.getModel(model).createInstance()) .getModel(model).createInstance())
.map((ModelData transform) -> new BogeyModelData((Transform<?>) transform))//TODO .map(BogeyModelData::new)
.toArray(BogeyModelData[]::new); .toArray(BogeyModelData[]::new);
contraptionModelData.put(keyFromModel(model), modelData); contraptionModelData.put(keyFromModel(model), modelData);
} }
@ -214,7 +213,7 @@ public abstract class BogeyRenderer {
.mapToObj(i -> materialManager.defaultSolid() .mapToObj(i -> materialManager.defaultSolid()
.material(Materials.TRANSFORMED) .material(Materials.TRANSFORMED)
.getModel(state).createInstance()) .getModel(state).createInstance())
.map((ModelData transform) -> new BogeyModelData((Transform<?>) transform))//TODO .map(BogeyModelData::new)
.toArray(BogeyModelData[]::new); .toArray(BogeyModelData[]::new);
contraptionModelData.put(keyFromModel(state), modelData); contraptionModelData.put(keyFromModel(state), modelData);
} }
@ -327,10 +326,10 @@ public abstract class BogeyRenderer {
public record BogeyModelData(Transform<?> transform) implements Transform<BogeyModelData> { public record BogeyModelData(Transform<?> transform) implements Transform<BogeyModelData> {
public static BogeyModelData from(PartialModel model) { public static BogeyModelData from(PartialModel model) {
BlockState air = Blocks.AIR.defaultBlockState(); BlockState air = Blocks.AIR.defaultBlockState();
return new BogeyModelData(CachedPartialBuffers.partial(model, air)); return new BogeyModelData(CachedBuffers.partial(model, air));
} }
public static BogeyModelData from(BlockState model) { public static BogeyModelData from(BlockState model) {
return new BogeyModelData(CachedBlockBuffers.block(model)); return new BogeyModelData(CachedBuffers.block(model));
} }
public void render(PoseStack ms, int light, @Nullable VertexConsumer vb) { public void render(PoseStack ms, int light, @Nullable VertexConsumer vb) {
transform.scale(1 - 1/512f); transform.scale(1 - 1/512f);

View file

@ -10,8 +10,8 @@ import com.mojang.blaze3d.vertex.VertexConsumer;
import com.mojang.math.Matrix4f; import com.mojang.math.Matrix4f;
import com.simibubi.create.AllPartialModels; import com.simibubi.create.AllPartialModels;
import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer; import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer;
import com.simibubi.create.foundation.render.CachedPartialBuffers;
import net.createmod.catnip.render.CachedBuffers;
import net.createmod.catnip.render.SuperByteBuffer; import net.createmod.catnip.render.SuperByteBuffer;
import net.createmod.catnip.utility.math.AngleHelper; import net.createmod.catnip.utility.math.AngleHelper;
import net.createmod.ponder.utility.WorldTickHolder; import net.createmod.ponder.utility.WorldTickHolder;
@ -228,7 +228,7 @@ public class FlapDisplayRenderer extends KineticBlockEntityRenderer<FlapDisplayB
@Override @Override
protected SuperByteBuffer getRotatedModel(FlapDisplayBlockEntity be, BlockState state) { protected SuperByteBuffer getRotatedModel(FlapDisplayBlockEntity be, BlockState state) {
return CachedPartialBuffers.partialFacingVertical(AllPartialModels.SHAFTLESS_COGWHEEL, state, return CachedBuffers.partialFacingVertical(AllPartialModels.SHAFTLESS_COGWHEEL, state,
state.getValue(FlapDisplayBlock.HORIZONTAL_FACING)); state.getValue(FlapDisplayBlock.HORIZONTAL_FACING));
} }

View file

@ -7,8 +7,8 @@ import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.VertexConsumer; import com.mojang.blaze3d.vertex.VertexConsumer;
import com.simibubi.create.AllPartialModels; import com.simibubi.create.AllPartialModels;
import com.simibubi.create.CreateClient; import com.simibubi.create.CreateClient;
import com.simibubi.create.foundation.render.CachedPartialBuffers;
import net.createmod.catnip.render.CachedBuffers;
import net.createmod.catnip.utility.AnimationTickHolder; import net.createmod.catnip.utility.AnimationTickHolder;
import net.createmod.catnip.utility.math.AngleHelper; import net.createmod.catnip.utility.math.AngleHelper;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
@ -71,7 +71,7 @@ public class CarriageCouplingRenderer {
{ {
ms.pushPose(); ms.pushPose();
ms.translate(anchor.x - camera.x, anchor.y - camera.y, anchor.z - camera.z); ms.translate(anchor.x - camera.x, anchor.y - camera.y, anchor.z - camera.z);
CachedPartialBuffers.partial(AllPartialModels.TRAIN_COUPLING_HEAD, air) CachedBuffers.partial(AllPartialModels.TRAIN_COUPLING_HEAD, air)
.rotateY(-yRot) .rotateY(-yRot)
.rotateX(xRot) .rotateX(xRot)
.light(lightCoords) .light(lightCoords)
@ -83,7 +83,7 @@ public class CarriageCouplingRenderer {
int couplingSegments = (int) Math.round(couplingDistance * 4); int couplingSegments = (int) Math.round(couplingDistance * 4);
double stretch = ((anchor2.distanceTo(anchor) - 2 * margin) * 4) / couplingSegments; double stretch = ((anchor2.distanceTo(anchor) - 2 * margin) * 4) / couplingSegments;
for (int j = 0; j < couplingSegments; j++) { for (int j = 0; j < couplingSegments; j++) {
CachedPartialBuffers.partial(AllPartialModels.TRAIN_COUPLING_CABLE, air) CachedBuffers.partial(AllPartialModels.TRAIN_COUPLING_CABLE, air)
.rotateY(-yRot + 180) .rotateY(-yRot + 180)
.rotateX(-xRot) .rotateX(-xRot)
.translate(0, 0, margin + 2 / 16f) .translate(0, 0, margin + 2 / 16f)
@ -101,7 +101,7 @@ public class CarriageCouplingRenderer {
.add(anchor2) .add(anchor2)
.subtract(camera); .subtract(camera);
ms.translate(translation.x, translation.y, translation.z); ms.translate(translation.x, translation.y, translation.z);
CachedPartialBuffers.partial(AllPartialModels.TRAIN_COUPLING_HEAD, air) CachedBuffers.partial(AllPartialModels.TRAIN_COUPLING_HEAD, air)
.rotateY(-yRot + 180) .rotateY(-yRot + 180)
.rotateX(-xRot) .rotateX(-xRot)
.light(lightCoords2) .light(lightCoords2)

View file

@ -7,8 +7,8 @@ import com.simibubi.create.content.contraptions.Contraption;
import com.simibubi.create.content.trains.entity.CarriageContraption; import com.simibubi.create.content.trains.entity.CarriageContraption;
import com.simibubi.create.content.trains.entity.CarriageContraptionEntity; import com.simibubi.create.content.trains.entity.CarriageContraptionEntity;
import com.simibubi.create.foundation.mixin.accessor.AgeableListModelAccessor; import com.simibubi.create.foundation.mixin.accessor.AgeableListModelAccessor;
import com.simibubi.create.foundation.render.CachedPartialBuffers;
import net.createmod.catnip.render.CachedBuffers;
import net.createmod.catnip.utility.Couple; import net.createmod.catnip.utility.Couple;
import net.minecraft.client.model.AgeableListModel; import net.minecraft.client.model.AgeableListModel;
import net.minecraft.client.model.AxolotlModel; import net.minecraft.client.model.AxolotlModel;
@ -113,7 +113,7 @@ public class TrainHatArmorLayer<T extends LivingEntity, M extends EntityModel<T>
ms.translate(0, -2.25f / 16f, 0); ms.translate(0, -2.25f / 16f, 0);
msr.rotateX(-8.5f); msr.rotateX(-8.5f);
BlockState air = Blocks.AIR.defaultBlockState(); BlockState air = Blocks.AIR.defaultBlockState();
CachedPartialBuffers.partial(AllPartialModels.TRAIN_HAT, air) CachedBuffers.partial(AllPartialModels.TRAIN_HAT, air)
.forEntityRender() .forEntityRender()
.light(light) .light(light)
.renderInto(ms, buffer.getBuffer(renderType)); .renderInto(ms, buffer.getBuffer(renderType));

View file

@ -9,8 +9,8 @@ import com.simibubi.create.content.trains.track.ITrackBlock;
import com.simibubi.create.content.trains.track.TrackTargetingBehaviour; import com.simibubi.create.content.trains.track.TrackTargetingBehaviour;
import com.simibubi.create.content.trains.track.TrackTargetingBehaviour.RenderedTrackOverlayType; import com.simibubi.create.content.trains.track.TrackTargetingBehaviour.RenderedTrackOverlayType;
import com.simibubi.create.foundation.blockEntity.renderer.SafeBlockEntityRenderer; import com.simibubi.create.foundation.blockEntity.renderer.SafeBlockEntityRenderer;
import com.simibubi.create.foundation.render.CachedPartialBuffers;
import net.createmod.catnip.render.CachedBuffers;
import net.createmod.ponder.utility.WorldTickHolder; import net.createmod.ponder.utility.WorldTickHolder;
import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.RenderType;
@ -33,10 +33,10 @@ public class SignalRenderer extends SafeBlockEntityRenderer<SignalBlockEntity> {
float renderTime = WorldTickHolder.getRenderTime(be.getLevel()); float renderTime = WorldTickHolder.getRenderTime(be.getLevel());
if (signalState.isRedLight(renderTime)) if (signalState.isRedLight(renderTime))
CachedPartialBuffers.partial(AllPartialModels.SIGNAL_ON, blockState) CachedBuffers.partial(AllPartialModels.SIGNAL_ON, blockState)
.renderInto(ms, buffer.getBuffer(RenderType.solid())); .renderInto(ms, buffer.getBuffer(RenderType.solid()));
else else
CachedPartialBuffers.partial(AllPartialModels.SIGNAL_OFF, blockState) CachedBuffers.partial(AllPartialModels.SIGNAL_OFF, blockState)
.light(light) .light(light)
.renderInto(ms, buffer.getBuffer(RenderType.solid())); .renderInto(ms, buffer.getBuffer(RenderType.solid()));

View file

@ -13,7 +13,6 @@ import com.simibubi.create.content.trains.entity.Train;
import com.simibubi.create.content.trains.entity.TrainIconType; import com.simibubi.create.content.trains.entity.TrainIconType;
import com.simibubi.create.foundation.gui.AllGuiTextures; import com.simibubi.create.foundation.gui.AllGuiTextures;
import com.simibubi.create.foundation.gui.AllIcons; import com.simibubi.create.foundation.gui.AllIcons;
import com.simibubi.create.foundation.gui.element.PartialModelGuiElement;
import com.simibubi.create.foundation.gui.widget.IconButton; import com.simibubi.create.foundation.gui.widget.IconButton;
import net.createmod.catnip.gui.AbstractSimiScreen; import net.createmod.catnip.gui.AbstractSimiScreen;
@ -111,7 +110,7 @@ public abstract class AbstractStationScreen extends AbstractSimiScreen {
if (blockEntity.resolveFlagAngle()) { if (blockEntity.resolveFlagAngle()) {
msr.translate(1 / 16f, -19 / 16f, -12 / 16f); msr.translate(1 / 16f, -19 / 16f, -12 / 16f);
StationRenderer.transformFlag(msr, blockEntity, partialTicks, 180, false); StationRenderer.transformFlag(msr, blockEntity, partialTicks, 180, false);
PartialModelGuiElement.of(getFlag(partialTicks)) GuiGameElement.of(getFlag(partialTicks))
.render(ms); .render(ms);
} }

View file

@ -11,8 +11,8 @@ import com.simibubi.create.content.trains.track.ITrackBlock;
import com.simibubi.create.content.trains.track.TrackTargetingBehaviour; import com.simibubi.create.content.trains.track.TrackTargetingBehaviour;
import com.simibubi.create.content.trains.track.TrackTargetingBehaviour.RenderedTrackOverlayType; import com.simibubi.create.content.trains.track.TrackTargetingBehaviour.RenderedTrackOverlayType;
import com.simibubi.create.foundation.blockEntity.renderer.SafeBlockEntityRenderer; import com.simibubi.create.foundation.blockEntity.renderer.SafeBlockEntityRenderer;
import com.simibubi.create.foundation.render.CachedPartialBuffers;
import net.createmod.catnip.render.CachedBuffers;
import net.createmod.catnip.render.SuperByteBuffer; import net.createmod.catnip.render.SuperByteBuffer;
import net.minecraft.client.renderer.LevelRenderer; import net.minecraft.client.renderer.LevelRenderer;
import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.MultiBufferSource;
@ -99,7 +99,7 @@ public class StationRenderer extends SafeBlockEntityRenderer<StationBlockEntity>
if (valid != -1) { if (valid != -1) {
int lightColor = LevelRenderer.getLightColor(level, currentPos); int lightColor = LevelRenderer.getLightColor(level, currentPos);
SuperByteBuffer sbb = CachedPartialBuffers.partial(assemblyOverlay, trackState); SuperByteBuffer sbb = CachedBuffers.partial(assemblyOverlay, trackState);
sbb.color(valid); sbb.color(valid);
sbb.light(lightColor); sbb.light(lightColor);
sbb.renderInto(ms, vb); sbb.renderInto(ms, vb);
@ -115,7 +115,7 @@ public class StationRenderer extends SafeBlockEntityRenderer<StationBlockEntity>
MultiBufferSource buffer, int light, int overlay) { MultiBufferSource buffer, int light, int overlay) {
if (!be.resolveFlagAngle()) if (!be.resolveFlagAngle())
return; return;
SuperByteBuffer flagBB = CachedPartialBuffers.partial(flag, be.getBlockState()); SuperByteBuffer flagBB = CachedBuffers.partial(flag, be.getBlockState());
//transformFlag(flagBB, be, partialTicks, be.flagYRot, be.flagFlipped);//TODO flw //transformFlag(flagBB, be, partialTicks, be.flagYRot, be.flagFlipped);//TODO flw
flagBB.translate(0.5f / 16, 0, 0) flagBB.translate(0.5f / 16, 0, 0)
.rotateY(be.flagFlipped ? 0 : 180) .rotateY(be.flagFlipped ? 0 : 180)

View file

@ -11,8 +11,8 @@ import com.mojang.blaze3d.vertex.VertexConsumer;
import com.simibubi.create.content.trains.track.BezierConnection.GirderAngles; import com.simibubi.create.content.trains.track.BezierConnection.GirderAngles;
import com.simibubi.create.content.trains.track.BezierConnection.SegmentAngles; import com.simibubi.create.content.trains.track.BezierConnection.SegmentAngles;
import com.simibubi.create.foundation.blockEntity.renderer.SafeBlockEntityRenderer; import com.simibubi.create.foundation.blockEntity.renderer.SafeBlockEntityRenderer;
import com.simibubi.create.foundation.render.CachedPartialBuffers;
import net.createmod.catnip.render.CachedBuffers;
import net.createmod.catnip.utility.Iterate; import net.createmod.catnip.utility.Iterate;
import net.createmod.catnip.utility.VecHelper; import net.createmod.catnip.utility.VecHelper;
import net.createmod.catnip.utility.math.AngleHelper; import net.createmod.catnip.utility.math.AngleHelper;
@ -60,7 +60,7 @@ public class TrackRenderer extends SafeBlockEntityRenderer<TrackBlockEntity> {
TrackMaterial.TrackModelHolder modelHolder = bc.getMaterial().getModelHolder(); TrackMaterial.TrackModelHolder modelHolder = bc.getMaterial().getModelHolder();
CachedPartialBuffers.partial(modelHolder.tie(), air) CachedBuffers.partial(modelHolder.tie(), air)
.mulPose(segment.tieTransform.pose()) .mulPose(segment.tieTransform.pose())
.mulNormal(segment.tieTransform.normal()) .mulNormal(segment.tieTransform.normal())
.light(light) .light(light)
@ -68,7 +68,7 @@ public class TrackRenderer extends SafeBlockEntityRenderer<TrackBlockEntity> {
for (boolean first : Iterate.trueAndFalse) { for (boolean first : Iterate.trueAndFalse) {
Pose transform = segment.railTransforms.get(first); Pose transform = segment.railTransforms.get(first);
CachedPartialBuffers.partial(first ? modelHolder.segment_left() : modelHolder.segment_right(), air) CachedBuffers.partial(first ? modelHolder.segment_left() : modelHolder.segment_right(), air)
.mulPose(transform.pose()) .mulPose(transform.pose())
.mulNormal(transform.normal()) .mulNormal(transform.normal())
.light(light) .light(light)
@ -93,7 +93,7 @@ public class TrackRenderer extends SafeBlockEntityRenderer<TrackBlockEntity> {
for (boolean first : Iterate.trueAndFalse) { for (boolean first : Iterate.trueAndFalse) {
Pose beamTransform = segment.beams.get(first); Pose beamTransform = segment.beams.get(first);
CachedPartialBuffers.partial(GIRDER_SEGMENT_MIDDLE, air) CachedBuffers.partial(GIRDER_SEGMENT_MIDDLE, air)
.mulPose(beamTransform.pose()) .mulPose(beamTransform.pose())
.mulNormal(beamTransform.normal()) .mulNormal(beamTransform.normal())
.light(light) .light(light)
@ -102,7 +102,7 @@ public class TrackRenderer extends SafeBlockEntityRenderer<TrackBlockEntity> {
for (boolean top : Iterate.trueAndFalse) { for (boolean top : Iterate.trueAndFalse) {
Pose beamCapTransform = segment.beamCaps.get(top) Pose beamCapTransform = segment.beamCaps.get(top)
.get(first); .get(first);
CachedPartialBuffers.partial(top ? GIRDER_SEGMENT_TOP : GIRDER_SEGMENT_BOTTOM, air) CachedBuffers.partial(top ? GIRDER_SEGMENT_TOP : GIRDER_SEGMENT_BOTTOM, air)
.mulPose(beamCapTransform.pose()) .mulPose(beamCapTransform.pose())
.mulNormal(beamCapTransform.normal()) .mulNormal(beamCapTransform.normal())
.light(light) .light(light)

View file

@ -22,8 +22,8 @@ import com.simibubi.create.content.trains.signal.TrackEdgePoint;
import com.simibubi.create.foundation.blockEntity.SmartBlockEntity; import com.simibubi.create.foundation.blockEntity.SmartBlockEntity;
import com.simibubi.create.foundation.blockEntity.behaviour.BehaviourType; import com.simibubi.create.foundation.blockEntity.behaviour.BehaviourType;
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
import com.simibubi.create.foundation.render.CachedPartialBuffers;
import net.createmod.catnip.render.CachedBuffers;
import net.createmod.catnip.utility.Iterate; import net.createmod.catnip.utility.Iterate;
import net.createmod.catnip.utility.VecHelper; import net.createmod.catnip.utility.VecHelper;
import net.createmod.catnip.utility.worldWrappers.SchematicWorld; import net.createmod.catnip.utility.worldWrappers.SchematicWorld;
@ -323,7 +323,7 @@ public class TrackTargetingBehaviour<T extends TrackEdgePoint> extends BlockEnti
ITrackBlock track = (ITrackBlock) block; ITrackBlock track = (ITrackBlock) block;
PartialModel partial = track.prepareTrackOverlay(level, pos, trackState, bezier, direction, ms, type); PartialModel partial = track.prepareTrackOverlay(level, pos, trackState, bezier, direction, ms, type);
if (partial != null) if (partial != null)
CachedPartialBuffers.partial(partial, trackState) CachedBuffers.partial(partial, trackState)
.translate(.5, 0, .5) .translate(.5, 0, .5)
.scale(scale) .scale(scale)
.translate(-.5, 0, -.5) .translate(-.5, 0, -.5)

View file

@ -1,14 +1,12 @@
package com.simibubi.create.foundation.block.connected; package com.simibubi.create.foundation.block.connected;
import net.createmod.catnip.render.SpriteShiftEntry; import net.createmod.catnip.render.SpriteShiftEntry;
import net.minecraft.resources.ResourceLocation;
public class CTSpriteShiftEntry extends SpriteShiftEntry { public class CTSpriteShiftEntry extends SpriteShiftEntry {
protected final CTType type; protected final CTType type;
public CTSpriteShiftEntry(CTType type, ResourceLocation originalTextureLocation, ResourceLocation targetTextureLocation) { public CTSpriteShiftEntry(CTType type) {
super(originalTextureLocation, targetTextureLocation);
this.type = type; this.type = type;
} }

View file

@ -3,10 +3,10 @@ package com.simibubi.create.foundation.block.connected;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import net.createmod.catnip.render.SpriteShifter; import net.createmod.catnip.platform.CatnipServices;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
public class CTSpriteShifter extends SpriteShifter { public class CTSpriteShifter {
private static final Map<String, CTSpriteShiftEntry> ENTRY_CACHE = new HashMap<>(); private static final Map<String, CTSpriteShiftEntry> ENTRY_CACHE = new HashMap<>();
@ -15,7 +15,8 @@ public class CTSpriteShifter extends SpriteShifter {
if (ENTRY_CACHE.containsKey(key)) if (ENTRY_CACHE.containsKey(key))
return ENTRY_CACHE.get(key); return ENTRY_CACHE.get(key);
CTSpriteShiftEntry entry = new CTSpriteShiftEntry(type, blockTexture, connectedTexture); CTSpriteShiftEntry entry = new CTSpriteShiftEntry(type);
CatnipServices.PLATFORM.executeOnClientOnly(() -> () -> entry.set(blockTexture, connectedTexture));
ENTRY_CACHE.put(key, entry); ENTRY_CACHE.put(key, entry);
return entry; return entry;
} }

View file

@ -58,7 +58,7 @@ import com.simibubi.create.foundation.utility.ServerSpeedProvider;
import com.simibubi.create.infrastructure.config.AllConfigs; import com.simibubi.create.infrastructure.config.AllConfigs;
import net.createmod.catnip.config.ui.BaseConfigScreen; import net.createmod.catnip.config.ui.BaseConfigScreen;
import net.createmod.catnip.render.DefaultSuperRenderTypeBufferImpl; import net.createmod.catnip.render.DefaultSuperRenderTypeBuffer;
import net.createmod.catnip.render.SuperRenderTypeBuffer; import net.createmod.catnip.render.SuperRenderTypeBuffer;
import net.createmod.catnip.utility.AnimationTickHolder; import net.createmod.catnip.utility.AnimationTickHolder;
import net.createmod.catnip.utility.worldWrappers.WrappedClientWorld; import net.createmod.catnip.utility.worldWrappers.WrappedClientWorld;
@ -198,7 +198,7 @@ public class ClientEvents {
public static void onRenderWorld(RenderLevelLastEvent event) { public static void onRenderWorld(RenderLevelLastEvent event) {
PoseStack ms = event.getPoseStack(); PoseStack ms = event.getPoseStack();
ms.pushPose(); ms.pushPose();
SuperRenderTypeBuffer buffer = DefaultSuperRenderTypeBufferImpl.getInstance(); SuperRenderTypeBuffer buffer = DefaultSuperRenderTypeBuffer.getInstance();
float partialTicks = AnimationTickHolder.getPartialTicks(); float partialTicks = AnimationTickHolder.getPartialTicks();
Vec3 camera = Minecraft.getInstance().gameRenderer.getMainCamera() Vec3 camera = Minecraft.getInstance().gameRenderer.getMainCamera()
.getPosition(); .getPosition();

View file

@ -1,22 +0,0 @@
package com.simibubi.create.foundation.gui.element;
import com.jozufozu.flywheel.core.PartialModel;
import net.createmod.catnip.gui.element.GuiGameElement;
public class PartialModelGuiElement extends GuiGameElement {
public static GuiRenderBuilder of(PartialModel partial) {
return new GuiBlockPartialRenderBuilder(partial);
}
public static class GuiBlockPartialRenderBuilder extends GuiBlockModelRenderBuilder {
public GuiBlockPartialRenderBuilder(PartialModel partial) {
super(partial.get(), null);
}
}
}

View file

@ -1,93 +0,0 @@
package com.simibubi.create.foundation.ponder;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.AllItems;
import com.simibubi.create.Create;
import net.createmod.ponder.foundation.PonderTag;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.item.Items;
import net.minecraft.world.level.block.Blocks;
public class CreatePonderTag extends PonderTag {
public static final PonderTag KINETIC_RELAYS = create("kinetic_relays")
.item(AllBlocks.COGWHEEL.get(), true, false)
.defaultLang("Kinetic Blocks", "Components which help relaying Rotational Force elsewhere")
.addToIndex();
public static final PonderTag KINETIC_SOURCES = create("kinetic_sources")
.item(AllBlocks.WATER_WHEEL.get(), true, false)
.defaultLang("Kinetic Sources", "Components which generate Rotational Force")
.addToIndex();
public static final PonderTag KINETIC_APPLIANCES = create("kinetic_appliances")
.item(AllBlocks.MECHANICAL_PRESS.get(), true, false)
.defaultLang("Kinetic Appliances", "Components which make use of Rotational Force")
.addToIndex();
public static final PonderTag FLUIDS = create("fluids")
.item(AllBlocks.FLUID_PIPE.get(), true, false)
.defaultLang("Fluid Manipulators", "Components which help relaying and making use of Fluids")
.addToIndex();
public static final PonderTag LOGISTICS = create("logistics")
.item(Blocks.CHEST, true, false)
.defaultLang("Item Transportation", "Components which help moving items around")
.addToIndex();
public static final PonderTag REDSTONE = create("redstone")
.item(Items.REDSTONE, true, false)
.defaultLang("Logic Components", "Components which help with redstone engineering")
.addToIndex();
public static final PonderTag DECORATION = create("decoration")
.item(Items.ROSE_BUSH, true, false)
.defaultLang("Aesthetics", "Components used mostly for decorative purposes");
public static final PonderTag CREATIVE = create("creative").item(AllBlocks.CREATIVE_CRATE.get(), true, false)
.defaultLang("Creative Mode", "Components not usually available for Survival Mode")
.addToIndex();
public static final PonderTag MOVEMENT_ANCHOR = create("movement_anchor")
.item(AllBlocks.MECHANICAL_PISTON.get(), true, false)
.defaultLang("Movement Anchors",
"Components which allow the creation of moving contraptions, animating an attached structure in a variety of ways")
.addToIndex();
public static final PonderTag CONTRAPTION_ACTOR = create("contraption_actor")
.item(AllBlocks.MECHANICAL_HARVESTER.get(), true, false)
.defaultLang("Contraption Actors",
"Components which expose special behaviour when attached to a moving contraption")
.addToIndex();
public static final PonderTag CONTRAPTION_ASSEMBLY = create("contraption_assembly")
.item(AllItems.SUPER_GLUE.get(), true, false)
.defaultLang("Block Attachment Utility",
"Tools and Components used to assemble structures moved as an animated Contraption")
.addToIndex();
public static final PonderTag SAILS = create("windmill_sails")
.item(AllBlocks.WINDMILL_BEARING.get())
.defaultLang("Sails for Windmill Bearings",
"Blocks that count towards the strength of a Windmill Contraption when assembled. Each of these have equal efficiency in doing so.");
public static final PonderTag ARM_TARGETS = create("arm_targets")
.item(AllBlocks.MECHANICAL_ARM.get())
.defaultLang("Targets for Mechanical Arms",
"Components which can be selected as inputs or outputs to the Mechanical Arm");
public static final PonderTag TRAIN_RELATED = create("train_related")
.item(AllBlocks.TRACK.get())
.defaultLang("Railway Equipment", "Components used in the construction or management of Train Contraptions")
.addToIndex();
public static final PonderTag DISPLAY_SOURCES = create("display_sources")
.item(AllBlocks.DISPLAY_LINK.get(), true, false)
.item(AllBlocks.DISPLAY_LINK.get(), false, true)
.defaultLang("Sources for Display Links",
"Components or Blocks which offer some data that can be read with a Display Link");
public static final PonderTag DISPLAY_TARGETS = create("display_targets")
.item(AllBlocks.DISPLAY_LINK.get(), true, false)
.item(AllBlocks.DISPLAY_LINK.get(), false, true)
.defaultLang("Targets for Display Links",
"Components or Blocks which can process and display the data received from a Display Link");
public CreatePonderTag(ResourceLocation id) {
super(id);
}
private static PonderTag create(String id) {
return create(Create.ID, id);
}
// Make sure class is loaded; Lang registration happens with builder calls
public static void register() {}
}

View file

@ -16,6 +16,7 @@ import com.simibubi.create.Create;
import com.simibubi.create.infrastructure.config.AllConfigs; import com.simibubi.create.infrastructure.config.AllConfigs;
import net.createmod.catnip.platform.CatnipServices; import net.createmod.catnip.platform.CatnipServices;
import net.createmod.catnip.render.SuperByteBuffer;
import net.createmod.catnip.utility.AnimationTickHolder; import net.createmod.catnip.utility.AnimationTickHolder;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.LevelRenderer; import net.minecraft.client.renderer.LevelRenderer;
@ -107,7 +108,7 @@ public class BlockEntityRenderHelper {
if (renderWorld != null) { if (renderWorld != null) {
int renderWorldLight = LevelRenderer.getLightColor(renderWorld, renderWorldPos); int renderWorldLight = LevelRenderer.getLightColor(renderWorld, renderWorldPos);
return FlwSuperByteBuffer.maxLight(worldLight, renderWorldLight); return SuperByteBuffer.maxLight(worldLight, renderWorldLight);
} }
return worldLight; return worldLight;

View file

@ -1,80 +0,0 @@
package com.simibubi.create.foundation.render;
import static net.minecraft.world.level.block.state.properties.BlockStateProperties.FACING;
import java.util.function.Supplier;
import org.apache.commons.lang3.tuple.Pair;
import com.jozufozu.flywheel.core.PartialModel;
import com.jozufozu.flywheel.util.transform.TransformStack;
import com.mojang.blaze3d.vertex.PoseStack;
import net.createmod.catnip.render.SuperBufferFactory;
import net.createmod.catnip.render.SuperByteBuffer;
import net.createmod.catnip.render.SuperByteBufferCache;
import net.createmod.catnip.render.SuperByteBufferCache.Compartment;
import net.createmod.catnip.utility.math.AngleHelper;
import net.minecraft.core.Direction;
import net.minecraft.world.level.block.state.BlockState;
public class CachedPartialBuffers {
public static final Compartment<PartialModel> PARTIAL = new Compartment<>();
public static final Compartment<Pair<Direction, PartialModel>> DIRECTIONAL_PARTIAL = new Compartment<>();
public static SuperByteBuffer partial(PartialModel partial, BlockState referenceState) {
return SuperByteBufferCache.getInstance().get(PARTIAL, partial,
() -> SuperBufferFactory.getInstance().createForBlock(partial.get(), referenceState));
}
public static SuperByteBuffer partial(PartialModel partial, BlockState referenceState,
Supplier<PoseStack> modelTransform) {
return SuperByteBufferCache.getInstance().get(PARTIAL, partial,
() -> SuperBufferFactory.getInstance().createForBlock(partial.get(), referenceState, modelTransform.get()));
}
public static SuperByteBuffer partialFacing(PartialModel partial, BlockState referenceState) {
Direction facing = referenceState.getValue(FACING);
return partialFacing(partial, referenceState, facing);
}
public static SuperByteBuffer partialFacing(PartialModel partial, BlockState referenceState, Direction facing) {
return partialDirectional(partial, referenceState, facing,
rotateToFace(facing));
}
public static SuperByteBuffer partialFacingVertical(PartialModel partial, BlockState referenceState, Direction facing) {
return partialDirectional(partial, referenceState, facing,
rotateToFaceVertical(facing));
}
public static SuperByteBuffer partialDirectional(PartialModel partial, BlockState referenceState, Direction dir,
Supplier<PoseStack> modelTransform) {
return SuperByteBufferCache.getInstance().get(DIRECTIONAL_PARTIAL, Pair.of(dir, partial),
() -> SuperBufferFactory.getInstance().createForBlock(partial.get(), referenceState, modelTransform.get()));
}
public static Supplier<PoseStack> rotateToFace(Direction facing) {
return () -> {
PoseStack stack = new PoseStack();
TransformStack.cast(stack)
.centre()
.rotateY(AngleHelper.horizontalAngle(facing))
.rotateX(AngleHelper.verticalAngle(facing))
.unCentre();
return stack;
};
}
public static Supplier<PoseStack> rotateToFaceVertical(Direction facing) {
return () -> {
PoseStack stack = new PoseStack();
TransformStack.cast(stack)
.centre()
.rotateY(AngleHelper.horizontalAngle(facing))
.rotateX(AngleHelper.verticalAngle(facing) + 90)
.unCentre();
return stack;
};
}
}

View file

@ -1,33 +0,0 @@
package com.simibubi.create.foundation.render;
import javax.annotation.ParametersAreNonnullByDefault;
import com.jozufozu.flywheel.core.model.ModelUtil;
import com.jozufozu.flywheel.core.model.ShadeSeparatedBufferedData;
import com.mojang.blaze3d.vertex.BufferBuilder;
import com.mojang.blaze3d.vertex.PoseStack;
import net.createmod.catnip.render.DefaultSuperBufferFactory;
import net.createmod.catnip.render.SuperBufferFactory;
import net.createmod.catnip.render.SuperByteBuffer;
import net.minecraft.MethodsReturnNonnullByDefault;
import net.minecraft.client.resources.model.BakedModel;
import net.minecraft.world.level.block.state.BlockState;
@MethodsReturnNonnullByDefault
@ParametersAreNonnullByDefault
public class FlwSuperBufferFactory implements SuperBufferFactory {
@Override
public SuperByteBuffer create(BufferBuilder builder) {
return new DefaultSuperBufferFactory().create(builder);//TODO
}
@Override
public SuperByteBuffer createForBlock(BakedModel model, BlockState referenceState, PoseStack ms) {
ShadeSeparatedBufferedData data = ModelUtil.getBufferedData(model, referenceState, ms);
FlwSuperByteBuffer sbb = new FlwSuperByteBuffer(data);
data.release();
return sbb;
}
}

View file

@ -1,476 +0,0 @@
package com.simibubi.create.foundation.render;
import java.nio.ByteBuffer;
import java.util.Optional;
import java.util.function.IntPredicate;
import javax.annotation.ParametersAreNonnullByDefault;
import com.jozufozu.flywheel.api.vertex.ShadedVertexList;
import com.jozufozu.flywheel.api.vertex.VertexList;
import com.jozufozu.flywheel.backend.ShadersModHandler;
import com.jozufozu.flywheel.core.model.ShadeSeparatedBufferedData;
import com.jozufozu.flywheel.core.vertex.BlockVertexList;
import com.jozufozu.flywheel.util.DiffuseLightCalculator;
import com.mojang.blaze3d.vertex.BufferBuilder;
import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.VertexConsumer;
import com.mojang.math.Matrix3f;
import com.mojang.math.Matrix4f;
import com.mojang.math.Quaternion;
import com.mojang.math.Vector3f;
import com.mojang.math.Vector4f;
import it.unimi.dsi.fastutil.longs.Long2IntMap;
import it.unimi.dsi.fastutil.longs.Long2IntOpenHashMap;
import net.createmod.catnip.render.SpriteShiftEntry;
import net.createmod.catnip.render.SuperByteBuffer;
import net.minecraft.MethodsReturnNonnullByDefault;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.LevelRenderer;
import net.minecraft.client.renderer.LightTexture;
import net.minecraft.client.renderer.texture.OverlayTexture;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.util.Mth;
import net.minecraft.world.level.Level;
@SuppressWarnings("unchecked")
@MethodsReturnNonnullByDefault
@ParametersAreNonnullByDefault
public class FlwSuperByteBuffer implements SuperByteBuffer {
private final VertexList template;
private final IntPredicate shadedPredicate;
// Vertex Position
private final PoseStack transforms = new PoseStack();
// Vertex Coloring
private boolean shouldColor;
private int r, g, b, a;
private boolean disableDiffuseMult;
private DiffuseLightCalculator diffuseCalculator;
// Vertex Texture Coords
private SpriteShiftFunc spriteShiftFunc;
// Vertex Overlay Color
private boolean hasOverlay;
private int overlay = OverlayTexture.NO_OVERLAY;
// Vertex Lighting
private boolean useWorldLight;
private Matrix4f lightTransform;
private boolean hasCustomLight;
private int packedLightCoords;
private boolean hybridLight;
// Vertex Normals
private boolean fullNormalTransform;
// Temporary
private static final Long2IntMap WORLD_LIGHT_CACHE = new Long2IntOpenHashMap();
public FlwSuperByteBuffer(ByteBuffer vertexBuffer, BufferBuilder.DrawState drawState, int unshadedStartVertex) {
int vertexCount = drawState.vertexCount();
int stride = drawState.format().getVertexSize();
ShadedVertexList template = new BlockVertexList.Shaded(vertexBuffer, vertexCount, stride, unshadedStartVertex);
shadedPredicate = template::isShaded;
this.template = template;
transforms.pushPose();
}
public FlwSuperByteBuffer(ShadeSeparatedBufferedData data) {
this(data.vertexBuffer(), data.drawState(), data.unshadedStartVertex());
}
public FlwSuperByteBuffer(ByteBuffer vertexBuffer, BufferBuilder.DrawState drawState) {
int vertexCount = drawState.vertexCount();
int stride = drawState.format().getVertexSize();
template = new BlockVertexList(vertexBuffer, vertexCount, stride);
shadedPredicate = index -> true;
transforms.pushPose();
}
public void renderInto(PoseStack input, VertexConsumer builder) {
if (isEmpty())
return;
Matrix4f modelMat = input.last()
.pose()
.copy();
Matrix4f localTransforms = transforms.last()
.pose();
modelMat.multiply(localTransforms);
Matrix3f normalMat;
if (fullNormalTransform) {
normalMat = input.last()
.normal()
.copy();
Matrix3f localNormalTransforms = transforms.last()
.normal();
normalMat.mul(localNormalTransforms);
} else {
normalMat = transforms.last()
.normal()
.copy();
}
if (useWorldLight) {
WORLD_LIGHT_CACHE.clear();
}
final Vector4f pos = new Vector4f();
final Vector3f normal = new Vector3f();
final Vector4f lightPos = new Vector4f();
DiffuseLightCalculator diffuseCalculator = ForcedDiffuseState.getForcedCalculator();
final boolean disableDiffuseMult =
this.disableDiffuseMult || (ShadersModHandler.isShaderPackInUse() && diffuseCalculator == null);
if (diffuseCalculator == null) {
diffuseCalculator = this.diffuseCalculator;
if (diffuseCalculator == null) {
diffuseCalculator = DiffuseLightCalculator.forCurrentLevel();
}
}
final int vertexCount = template.getVertexCount();
for (int i = 0; i < vertexCount; i++) {
float x = template.getX(i);
float y = template.getY(i);
float z = template.getZ(i);
pos.set(x, y, z, 1F);
pos.transform(modelMat);
builder.vertex(pos.x(), pos.y(), pos.z());
float normalX = template.getNX(i);
float normalY = template.getNY(i);
float normalZ = template.getNZ(i);
normal.set(normalX, normalY, normalZ);
normal.transform(normalMat);
float nx = normal.x();
float ny = normal.y();
float nz = normal.z();
byte r, g, b, a;
if (shouldColor) {
r = (byte) this.r;
g = (byte) this.g;
b = (byte) this.b;
a = (byte) this.a;
} else {
r = template.getR(i);
g = template.getG(i);
b = template.getB(i);
a = template.getA(i);
}
if (disableDiffuseMult) {
builder.color(r, g, b, a);
} else {
float instanceDiffuse = diffuseCalculator.getDiffuse(nx, ny, nz, shadedPredicate.test(i));
int colorR = transformColor(r, instanceDiffuse);
int colorG = transformColor(g, instanceDiffuse);
int colorB = transformColor(b, instanceDiffuse);
builder.color(colorR, colorG, colorB, a);
}
float u = template.getU(i);
float v = template.getV(i);
if (spriteShiftFunc != null) {
spriteShiftFunc.shift(builder, u, v);
} else {
builder.uv(u, v);
}
if (hasOverlay) {
builder.overlayCoords(overlay);
}
int light;
if (useWorldLight) {
lightPos.set(((x - .5f) * 15 / 16f) + .5f, (y - .5f) * 15 / 16f + .5f, (z - .5f) * 15 / 16f + .5f, 1f);
lightPos.transform(localTransforms);
if (lightTransform != null) {
lightPos.transform(lightTransform);
}
light = getLight(Minecraft.getInstance().level, lightPos);
if (hasCustomLight) {
light = maxLight(light, packedLightCoords);
}
} else if (hasCustomLight) {
light = packedLightCoords;
} else {
light = template.getLight(i);
}
if (hybridLight) {
builder.uv2(maxLight(light, template.getLight(i)));
} else {
builder.uv2(light);
}
builder.normal(nx, ny, nz);
builder.endVertex();
}
reset();
}
@Override
public FlwSuperByteBuffer reset() {
while (!transforms.clear())
transforms.popPose();
transforms.pushPose();
shouldColor = false;
r = 0;
g = 0;
b = 0;
a = 0;
disableDiffuseMult = false;
diffuseCalculator = null;
spriteShiftFunc = null;
hasOverlay = false;
overlay = OverlayTexture.NO_OVERLAY;
useWorldLight = false;
lightTransform = null;
hasCustomLight = false;
packedLightCoords = 0;
hybridLight = false;
fullNormalTransform = false;
return this;
}
public boolean isEmpty() {
return template.isEmpty();
}
@Override
public void delete() {
template.delete();
}
public PoseStack getTransforms() {
return transforms;
}
@Override
public FlwSuperByteBuffer translate(double x, double y, double z) {
transforms.translate(x, y, z);
return this;
}
@Override
public FlwSuperByteBuffer multiply(Quaternion quaternion) {
transforms.mulPose(quaternion);
return this;
}
@Override
public FlwSuperByteBuffer scale(float factorX, float factorY, float factorZ) {
transforms.scale(factorX, factorY, factorZ);
return this;
}
@Override
public FlwSuperByteBuffer pushPose() {
transforms.pushPose();
return this;
}
@Override
public FlwSuperByteBuffer popPose() {
transforms.popPose();
return this;
}
@Override
public FlwSuperByteBuffer mulPose(Matrix4f pose) {
transforms.last()
.pose()
.multiply(pose);
return this;
}
@Override
public FlwSuperByteBuffer mulNormal(Matrix3f normal) {
transforms.last()
.normal()
.mul(normal);
return this;
}
public FlwSuperByteBuffer transform(PoseStack stack) {
transforms.last()
.pose()
.multiply(stack.last()
.pose());
transforms.last()
.normal()
.mul(stack.last()
.normal());
return this;
}
public FlwSuperByteBuffer rotateCentered(Direction axis, float radians) {
translate(.5f, .5f, .5f).rotate(axis, radians)
.translate(-.5f, -.5f, -.5f);
return this;
}
public FlwSuperByteBuffer rotateCentered(Quaternion q) {
translate(.5f, .5f, .5f).multiply(q)
.translate(-.5f, -.5f, -.5f);
return this;
}
public FlwSuperByteBuffer color(int r, int g, int b, int a) {
shouldColor = true;
this.r = r;
this.g = g;
this.b = b;
this.a = a;
return this;
}
public FlwSuperByteBuffer color(int color) {
shouldColor = true;
r = ((color >> 16) & 0xFF);
g = ((color >> 8) & 0xFF);
b = (color & 0xFF);
a = 255;
return this;
}
/**
* Prevents vertex colors from being multiplied by the diffuse value calculated
* from the final transformed normal vector. Useful for entity rendering, when
* diffuse is applied automatically later.
*/
public FlwSuperByteBuffer disableDiffuse() {
disableDiffuseMult = true;
return this;
}
public FlwSuperByteBuffer diffuseCalculator(DiffuseLightCalculator diffuseCalculator) {
this.diffuseCalculator = diffuseCalculator;
return this;
}
public FlwSuperByteBuffer shiftUV(SpriteShiftEntry entry) {
this.spriteShiftFunc = (builder, u, v) -> builder.uv(entry.getTargetU(u), entry.getTargetV(v));
return this;
}
public FlwSuperByteBuffer shiftUVScrolling(SpriteShiftEntry entry, float scrollU, float scrollV) {
this.spriteShiftFunc = (builder, u, v) -> {
float targetU = u - entry.getOriginal()
.getU0() + entry.getTarget()
.getU0()
+ scrollU;
float targetV = v - entry.getOriginal()
.getV0() + entry.getTarget()
.getV0()
+ scrollV;
builder.uv(targetU, targetV);
};
return this;
}
public FlwSuperByteBuffer shiftUVtoSheet(SpriteShiftEntry entry, float uTarget, float vTarget, int sheetSize) {
this.spriteShiftFunc = (builder, u, v) -> {
float targetU = entry.getTarget()
.getU((SpriteShiftEntry.getUnInterpolatedU(entry.getOriginal(), u) / sheetSize) + uTarget * 16);
float targetV = entry.getTarget()
.getV((SpriteShiftEntry.getUnInterpolatedV(entry.getOriginal(), v) / sheetSize) + vTarget * 16);
builder.uv(targetU, targetV);
};
return this;
}
public FlwSuperByteBuffer overlay() {
hasOverlay = true;
return this;
}
public FlwSuperByteBuffer overlay(int overlay) {
hasOverlay = true;
this.overlay = overlay;
return this;
}
public FlwSuperByteBuffer light() {
useWorldLight = true;
return this;
}
public FlwSuperByteBuffer light(Matrix4f lightTransform) {
useWorldLight = true;
this.lightTransform = lightTransform;
return this;
}
public FlwSuperByteBuffer light(int packedLightCoords) {
hasCustomLight = true;
this.packedLightCoords = packedLightCoords;
return this;
}
/**
* Uses max light from calculated light (world light or custom light) and vertex
* light for the final light value. Ineffective if any other light method was
* not called.
*/
public FlwSuperByteBuffer hybridLight() {
hybridLight = true;
return this;
}
/**
* Transforms normals not only by the local matrix stack, but also by the passed
* matrix stack.
*/
public FlwSuperByteBuffer fullNormalTransform() {
fullNormalTransform = true;
return this;
}
@Deprecated
public static Optional<FlwSuperByteBuffer> cast(SuperByteBuffer buffer) {
if (!(buffer instanceof FlwSuperByteBuffer flwBuffer))
return Optional.empty();
return Optional.of(flwBuffer);
}
public static int transformColor(byte component, float scale) {
return Mth.clamp((int) (Byte.toUnsignedInt(component) * scale), 0, 255);
}
public static int transformColor(int component, float scale) {
return Mth.clamp((int) (component * scale), 0, 255);
}
public static int maxLight(int packedLight1, int packedLight2) {
int blockLight1 = LightTexture.block(packedLight1);
int skyLight1 = LightTexture.sky(packedLight1);
int blockLight2 = LightTexture.block(packedLight2);
int skyLight2 = LightTexture.sky(packedLight2);
return LightTexture.pack(Math.max(blockLight1, blockLight2), Math.max(skyLight1, skyLight2));
}
private static int getLight(Level world, Vector4f lightPos) {
BlockPos pos = new BlockPos(lightPos.x(), lightPos.y(), lightPos.z());
return WORLD_LIGHT_CACHE.computeIfAbsent(pos.asLong(), $ -> LevelRenderer.getLightColor(world, pos));
}
}

View file

@ -1,31 +0,0 @@
package com.simibubi.create.foundation.render;
import javax.annotation.Nullable;
import com.jozufozu.flywheel.util.DiffuseLightCalculator;
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
public final class ForcedDiffuseState {
private static final ThreadLocal<ObjectArrayList<DiffuseLightCalculator>> FORCED_DIFFUSE = ThreadLocal.withInitial(ObjectArrayList::new);
private ForcedDiffuseState() {
}
public static void pushCalculator(DiffuseLightCalculator calculator) {
FORCED_DIFFUSE.get().push(calculator);
}
public static void popCalculator() {
FORCED_DIFFUSE.get().pop();
}
@Nullable
public static DiffuseLightCalculator getForcedCalculator() {
ObjectArrayList<DiffuseLightCalculator> stack = FORCED_DIFFUSE.get();
if (stack.isEmpty()) {
return null;
}
return stack.top();
}
}

View file

@ -3,6 +3,7 @@ package com.simibubi.create.infrastructure.command;
import com.mojang.brigadier.builder.ArgumentBuilder; import com.mojang.brigadier.builder.ArgumentBuilder;
import com.simibubi.create.CreateClient; import com.simibubi.create.CreateClient;
import net.createmod.catnip.CatnipClient;
import net.createmod.catnip.utility.lang.Components; import net.createmod.catnip.utility.lang.Components;
import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.CommandSourceStack;
import net.minecraft.commands.Commands; import net.minecraft.commands.Commands;
@ -25,6 +26,7 @@ public class ClearBufferCacheCommand {
@OnlyIn(Dist.CLIENT) @OnlyIn(Dist.CLIENT)
private static void execute() { private static void execute() {
CatnipClient.invalidateRenderers();
CreateClient.invalidateRenderers(); CreateClient.invalidateRenderers();
} }
} }