[1.12.2] Rotation de différents degrés dans le .json blockstates



  • Bonjour à tous,

    Le lien vers mon topic EN sur le forum de Forge dispo ici !

    Je suis en train de modder un panneau custom, je n'ai pas besoin d'écrire de texte sur le panneau au moment du rendu, je me suis donc dirigé vers un model custom avec des rotations dans le fichier blockstates sans passer par TESR.

    En lisant les specs du format Forge Blockstate V1 (qu'on retrouve notamment dans un tuto membre FR ici), il est possible d'effectuer des rotations de degré différent de 90 (ce qui est mon objectif puisque le panneau original a 16 rotations différentes en incrémentant de 22.5 degrés par rotation).

    Je me tourne donc vers la communauté FR en espérant que quelqu'un ait déjà résolu ce problème !

    Voici mon fichier blockstates :

    {
    	"forge_marker": 1,
    	"defaults": {
    		"model": "mymod:standing_rp_sign",
    		"uvlock": true
    	},
    	"variants": {
    		"rotation": {
    			"0": {
    				"transform": { "rotation": { "y": 180 } }
    			},
    			"1": {
    				"transform": { "rotation": { "y": 157.5 } }
    			},
    			"2": {
    				"transform": { "rotation": { "y": 135 } }
    			},
    			"3": {
    				"transform": { "rotation": { "y": 112.5 } }
    			},
    			"4": {
    				"transform": { "rotation": { "y": 90 } }
    			},
    			"5": {
    				"transform": { "rotation": { "y": 67.5 } }
    			},
    			"6": {
    				"transform": { "rotation": { "y": 45 } }
    			},
    			"7": {
    				"transform": { "rotation": { "y": 22.5 } }
    			},
    			"8": {
    				"transform": { "rotation": { "y": 0 } }
    			},
    			"9": {
    				"transform": { "rotation": { "y": 337.5 } }
    			},
    			"10": {
    				"transform": { "rotation": { "y": 315 } }
    			},
    			"11": {
    				"transform": { "rotation": { "y": 292.5 } }
    			},
    			"12": {
    				"transform": { "rotation": { "y": 270 } }
    			},
    			"13": {
    				"transform": { "rotation": { "y": 247.5 } }
    			},
    			"14": {
    				"transform": { "rotation": { "y": 225 } }
    			},
    			"15": {
    				"transform": { "rotation": { "y": 202.5 } }
    			}
    		}
        }
    }
    

    Le résultat est le suivant :

    result

    J'ai regardé dans le code de Forge (notamment les fichiers BlockStateLoader.java et TRSRTransformation.java) et visiblement il est possible de passer des angles différents de 90 degrés. Je ne comprends pas pourquoi j'ai un tel résultat.

    Pouvez-vous m'aider ?

    Bonne journée !



  • Bonjour,
    As-tu essayé d'utiliser "post-rotation" à la place de rotation ? comme la post rotation est appliquée à la fin, ça pourrait peut-être corriger le problème.



  • Et si cela ne marche pas, je pense pas que ce soit possible de faire ce que tu veux juste dans le json du blockstate. Il faudrait faire un model par rotation.



  • @LeBossMax2 a dit dans [1.12.2] Rotation de différents degrés dans le .json blockstates :

    Bonjour,
    As-tu essayé d'utiliser "post-rotation" à la place de rotation ? comme la post rotation est appliquée à la fin, ça pourrait peut-être corriger le problème.

    Bonsoir,

    Même en changeant vers une post-rotation, j'obtiens le même résultat malheureusement.

    J'ai regardé sur le forum s'il existait déjà la solution, je suis tombé sur ce topic.

    @LeBossMax2 a dit dans [1.12.2] Rotation de différents degrés dans le .json blockstates :

    Et si cela ne marche pas, je pense pas que ce soit possible de faire ce que tu veux juste dans le json du blockstate. Il faudrait faire un model par rotation.

    Effectivement, c'est ce que proposait le modder dans le lien ci-dessus. Cela peut résoudre mon problème mais j'aimerais tout de même comprendre pourquoi j'ai ce bug. Déjà, est-ce un bug ? Parce que sur les specs du Forge Blockstate V1 (que tu as commenté d'ailleurs !), il est indiqué qu'on peut utiliser n'importe quel type d'angle et aussi le code de Forge montre bien qu'on peut utiliser des floats.



  • Le problème, c'est que la manière dont les rotations sont faites dans les blockstate n'est pas faite pour des valeurs qui ne sont pas des multiples de 90. C'est une espèce de fausse rotation. Juste la taille des éléments est changée pour donner une impression de rotation.
    Si tu veux éviter de faire 16 models, tu peux en faire que 4 et appliquer en plus des rotations dans le blockstate.


Log in to reply