Utiliser un BufferedImage comme texture de bloc



  • Bonjour,
    J'essaie de créer un mod où les textures sont générées au démarrage de Minecraft depuis un BufferedImage.
    Par exemple, pour créer une roche avec une couleur custom et précise, le mod prendrait la texture de la roche la colorerait et l'associerait au bloc de roche colorée.
    Sauf que je ne sais pas faire cette dernière étape.

    J'ai notamment essayé d'utiliser les DynamicTexture 😅 :

    // cette méthode n'est pas forcément correct mais celle dans le code de mon mod fonctionne, c'est ajusté pour l'idée
    public static ResourceLocation addTexture(BufferedImage img, ResourceLocation loc) {
    	TextureManager textureManager = Minecraft.getInstance().getTextureManager();
    	NativeImage n = new NativeImage(img.getWidth(), img.getHeight(), true);
    	for (int i = 0; i < img.getWidth(); i++) {
    		for (int j = 0; j < img.getHeight(); j++) {
            	double[] c = img.getRaster().getPixel(i, j, new double[0]);
                color = (((((c[3] >> 8) + c[2]) >> 8) + c[1]) >> 8) + c[0];
    			n.setPixelRGBA(i, j, color);
    		}
    	}
    	DynamicTexture dyn = new DynamicTexture(n);
    	
    	textureManager.loadTexture(loc, dyn);
    	return loc;
    }
    

    Sauf qu'à partir de là le DynamicTexture est créé mais je ne sais pas comment le lié au bloc...

    De plus je voudrais savoir s'il n'y aurait pas une meilleur solution que les DynamicTexture.

    J'ai fait beaucoup de recherche mais je n'ai rien trouvé de concluant et fonctionnel
    Ainsi j'espère que quelqu'un pourra m'aider. 🍀



  • Avec les DynamicTextures tu es sur la bonne voie.
    Mais il va falloir, faire joujou avec les BakedModel, afin de définir tout ce gloubiboulga de textures et modèles.

    https://mcforge.readthedocs.io/en/1.13.x/models/using/#block-models


Log in to reply