mojira.dev
MC-270524

Large paintings can no longer have large back textures

The bug

In 1.13 and earlier, the file paintings_kristoffer_zetterstrand.png had a 4×4 field of the back texture which would have been used for large paintings. However, as of 1.14, only a 16×16 texture region is available to retexture, which tiles to fit the back of the painting, making it impossible to give paintings larger back textures.

How to fix

Reimplement this larger back texture for paintings. I've cropped two versions from the Java and Bedrock versions of the old atlas - one for Programmer Art and the other for the default textures.

Alternatively, one back texture could be implemented for each unique size of painting.

Attachments

Comments

migrated
[media][media]
[Mod] Jingy

Can confirm with code analysis:

public class PaintingTextureManager extends TextureAtlasHolder {
   private static final ResourceLocation BACK_SPRITE_LOCATION = new ResourceLocation("back");

   public PaintingTextureManager(TextureManager var1) {
      super(var1, new ResourceLocation("textures/atlas/paintings.png"), new ResourceLocation("paintings"));
   }

   public TextureAtlasSprite get(PaintingVariant var1) {
      return this.getSprite(BuiltInRegistries.PAINTING_VARIANT.getKey(var1));
   }

   public TextureAtlasSprite getBackSprite() {
      return this.getSprite(BACK_SPRITE_LOCATION);
   }
}

While not obvious, this code handles rendering each 16x16 space on the back of the painting using the same texture.
Class is PaintingRenderer.java and method is renderPainting()

. . .
            this.vertex(var8, var2, var32, var35, var42, var43, -0.5F, 0, 0, -1, var40);
            this.vertex(var8, var2, var33, var35, var41, var43, -0.5F, 0, 0, -1, var40);
            this.vertex(var8, var2, var33, var34, var41, var44, -0.5F, 0, 0, -1, var40);
            this.vertex(var8, var2, var32, var34, var42, var44, -0.5F, 0, 0, -1, var40);
            this.vertex(var8, var2, var32, var34, var13, var14, 0.5F, 0, 0, 1, var40);
            this.vertex(var8, var2, var33, var34, var12, var14, 0.5F, 0, 0, 1, var40);
            this.vertex(var8, var2, var33, var35, var12, var15, 0.5F, 0, 0, 1, var40);
            this.vertex(var8, var2, var32, var35, var13, var15, 0.5F, 0, 0, 1, var40);
            this.vertex(var8, var2, var32, var34, var16, var18, -0.5F, 0, 1, 0, var40);
            this.vertex(var8, var2, var33, var34, var17, var18, -0.5F, 0, 1, 0, var40);
            this.vertex(var8, var2, var33, var34, var17, var19, 0.5F, 0, 1, 0, var40);
            this.vertex(var8, var2, var32, var34, var16, var19, 0.5F, 0, 1, 0, var40);
            this.vertex(var8, var2, var32, var35, var16, var18, 0.5F, 0, -1, 0, var40);
            this.vertex(var8, var2, var33, var35, var17, var18, 0.5F, 0, -1, 0, var40);
            this.vertex(var8, var2, var33, var35, var17, var19, -0.5F, 0, -1, 0, var40);
            this.vertex(var8, var2, var32, var35, var16, var19, -0.5F, 0, -1, 0, var40);
            this.vertex(var8, var2, var32, var34, var21, var22, 0.5F, -1, 0, 0, var40);
            this.vertex(var8, var2, var32, var35, var21, var23, 0.5F, -1, 0, 0, var40);
            this.vertex(var8, var2, var32, var35, var20, var23, -0.5F, -1, 0, 0, var40);
            this.vertex(var8, var2, var32, var34, var20, var22, -0.5F, -1, 0, 0, var40);
            this.vertex(var8, var2, var33, var34, var21, var22, -0.5F, 1, 0, 0, var40);
            this.vertex(var8, var2, var33, var35, var21, var23, -0.5F, 1, 0, 0, var40);
            this.vertex(var8, var2, var33, var35, var20, var23, 0.5F, 1, 0, 0, var40);
            this.vertex(var8, var2, var33, var34, var20, var22, 0.5F, 1, 0, 0, var40);
. . .

muzikbike

(Unassigned)

Community Consensus

Textures and models

1.20.4, 24w14a

Retrieved