Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class BakedModelTest implements IBakedModel
- {
- private TextureAtlasSprite sprite;
- private VertexFormat format;
- public BakedModelTest(VertexFormat format, Function<ResourceLocation, TextureAtlasSprite> bakedTextureGetter) {
- this.format = format;
- sprite = bakedTextureGetter.apply(new ResourceLocation(Reflibs.MOD_ID, "blocks/Blue"));
- }
- private void putVertex(UnpackedBakedQuad.Builder builder, Vec3d normal, double x, double y, double z, float u, float v) {
- for (int e = 0; e < format.getElementCount(); e++) {
- switch (format.getElement(e).getUsage()) {
- case POSITION:
- builder.put(e, (float)x, (float)y, (float)z, 1.0f);
- break;
- case COLOR:
- builder.put(e, 1.0f, 1.0f, 1.0f, 1.0f);
- break;
- case UV:
- if (format.getElement(e).getIndex() == 0) {
- u = sprite.getInterpolatedU(u);
- v = sprite.getInterpolatedV(v);
- builder.put(e, u, v, 0f, 1f);
- break;
- }
- case NORMAL:
- builder.put(e, (float) normal.xCoord, (float) normal.yCoord, (float) normal.zCoord, 0f);
- break;
- default:
- builder.put(e);
- break;
- }
- }
- }
- private BakedQuad createQuad(Vec3d v1, Vec3d v2, Vec3d v3, Vec3d v4, TextureAtlasSprite sprite) {
- Vec3d normal = v1.subtract(v2).crossProduct(v3.subtract(v2));
- UnpackedBakedQuad.Builder builder = new UnpackedBakedQuad.Builder(format);
- builder.setTexture(sprite);
- putVertex(builder, normal, v1.xCoord, v1.yCoord, v1.zCoord, 0, 0);
- putVertex(builder, normal, v2.xCoord, v2.yCoord, v2.zCoord, 0, 16);
- putVertex(builder, normal, v3.xCoord, v3.yCoord, v3.zCoord, 16, 16);
- putVertex(builder, normal, v4.xCoord, v4.yCoord, v4.zCoord, 16, 0);
- return builder.build();
- }
- @Override
- public List<BakedQuad> getQuads(IBlockState state, EnumFacing side, long rand)
- {
- if (side != null)
- {
- return Collections.emptyList();
- }
- List<BakedQuad> quads = new ArrayList<BakedQuad>();
- quads.add(createQuad(new Vec3d(1.0D, 0.0D, 0.0D), new Vec3d(1.0D, 0.0D, 1.0D), new Vec3d(0.0D, 0.0D, 1.0D), new Vec3d(0.0D, 0.0D, 0.0D), this.sprite));
- quads.add(createQuad(new Vec3d(0.0D, 1.0D, 0.0D), new Vec3d(0.0D, 1.0D, 1.0D), new Vec3d(1.0D, 1.0D, 1.0D), new Vec3d(1.0D, 1.0D, 0.0D), this.sprite));
- quads.add(createQuad(new Vec3d(1.0D, 0.0D, 1.0D), new Vec3d(1.0D, 1.0D, 1.0D), new Vec3d(0.0D, 1.0D, 1.0D), new Vec3d(0.0D, 0.0D, 1.0D), this.sprite));
- quads.add(createQuad(new Vec3d(0.0D, 0.0D, 0.0D), new Vec3d(0.0D, 1.0D, 0.0D), new Vec3d(1.0D, 1.0D, 0.0D), new Vec3d(1.0D, 0.0D, 0.0D), this.sprite));
- quads.add(createQuad(new Vec3d(0.0D, 0.0D, 1.0D), new Vec3d(0.0D, 1.0D, 1.0D), new Vec3d(0.0D, 1.0D, 0.0D), new Vec3d(0.0D, 0.0D, 0.0D), this.sprite));
- quads.add(createQuad(new Vec3d(1.0D, 0.0D, 0.0D), new Vec3d(1.0D, 1.0D, 0.0D), new Vec3d(1.0D, 1.0D, 1.0D), new Vec3d(1.0D, 0.0D, 1.0D), this.sprite));
- return quads;
- }
- @Override
- public ItemOverrideList getOverrides() {
- return null;
- }
- @Override
- public boolean isAmbientOcclusion() {
- return false;
- }
- @Override
- public boolean isGui3d() {
- return false;
- }
- @Override
- public boolean isBuiltInRenderer() {
- return false;
- }
- @Override
- public TextureAtlasSprite getParticleTexture() {
- return sprite;
- }
- @Override
- public ItemCameraTransforms getItemCameraTransforms() {
- return ItemCameraTransforms.DEFAULT;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement