SteamPowered/src/main/java/com/teammoeg/steampowered/create/flywheel/engine/EngineRenderer.java
Timo Ley 116a0461d8 feat!: include Furnace Engine
BREAKING CHANGE: uses normal create instead of fork
2023-12-04 16:08:50 +01:00

46 lines
1.6 KiB
Java

package com.teammoeg.steampowered.create.flywheel.engine;
import com.jozufozu.flywheel.backend.Backend;
import com.jozufozu.flywheel.core.PartialModel;
import com.mojang.blaze3d.vertex.PoseStack;
import com.simibubi.create.foundation.blockEntity.renderer.SafeBlockEntityRenderer;
import com.simibubi.create.foundation.render.CachedBufferer;
import com.simibubi.create.foundation.utility.AngleHelper;
import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.RenderType;
import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider;
import net.minecraft.core.Direction;
import net.minecraft.world.level.block.Block;
public class EngineRenderer<T extends EngineTileEntity> extends SafeBlockEntityRenderer<T> {
public EngineRenderer(BlockEntityRendererProvider.Context context) {
}
@Override
protected void renderSafe(T te, float partialTicks, PoseStack ms, MultiBufferSource buffer, int light,
int overlay) {
if (Backend.canUseInstancing(te.getLevel())) return;
Block block = te.getBlockState()
.getBlock();
if (block instanceof EngineBlock) {
EngineBlock engineBlock = (EngineBlock) block;
PartialModel frame = engineBlock.getFrameModel();
if (frame != null) {
Direction facing = te.getBlockState()
.getValue(EngineBlock.FACING);
float angle = AngleHelper.rad(AngleHelper.horizontalAngle(facing));
CachedBufferer.partial(frame, te.getBlockState())
.rotateCentered(Direction.UP, angle)
.translate(0, 0, -1)
.light(light)
.renderInto(ms, buffer.getBuffer(RenderType.solid()));
}
}
}
}