Code/net/minecraft/client/renderer/block/model/SimpleUnbakedGeometry.java

62 lines
2.7 KiB
Java
Raw Normal View History

2025-07-01 06:20:03 +00:00
package net.minecraft.client.renderer.block.model;
import java.util.List;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.client.resources.model.ModelBaker;
import net.minecraft.client.resources.model.ModelDebugName;
import net.minecraft.client.resources.model.ModelState;
import net.minecraft.client.resources.model.QuadCollection;
import net.minecraft.client.resources.model.SpriteGetter;
import net.minecraft.client.resources.model.UnbakedGeometry;
import net.minecraft.core.Direction;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
@OnlyIn(Dist.CLIENT)
public record SimpleUnbakedGeometry(List<BlockElement> elements) implements UnbakedGeometry {
@Override
public QuadCollection bake(TextureSlots p_397805_, ModelBaker p_395314_, ModelState p_394240_, ModelDebugName p_392934_) {
return bake(this.elements, p_397805_, p_395314_.sprites(), p_394240_, p_392934_);
}
public static QuadCollection bake(
List<BlockElement> p_393173_, TextureSlots p_395401_, SpriteGetter p_391624_, ModelState p_397074_, ModelDebugName p_393473_
) {
QuadCollection.Builder quadcollection$builder = new QuadCollection.Builder();
for (BlockElement blockelement : p_393173_) {
blockelement.faces()
.forEach(
(p_392025_, p_394051_) -> {
TextureAtlasSprite textureatlassprite = p_391624_.resolveSlot(p_395401_, p_394051_.texture(), p_393473_);
if (p_394051_.cullForDirection() == null) {
quadcollection$builder.addUnculledFace(bakeFace(blockelement, p_394051_, textureatlassprite, p_392025_, p_397074_));
} else {
quadcollection$builder.addCulledFace(
Direction.rotate(p_397074_.transformation().getMatrix(), p_394051_.cullForDirection()),
bakeFace(blockelement, p_394051_, textureatlassprite, p_392025_, p_397074_)
);
}
}
);
}
return quadcollection$builder.build();
}
private static BakedQuad bakeFace(
BlockElement p_396933_, BlockElementFace p_396910_, TextureAtlasSprite p_394381_, Direction p_395496_, ModelState p_393937_
) {
return FaceBakery.bakeQuad(
p_396933_.from(),
p_396933_.to(),
p_396910_,
p_394381_,
p_395496_,
p_393937_,
p_396933_.rotation(),
p_396933_.shade(),
p_396933_.lightEmission()
);
}
}