Problème rendu ISBRH
-
@Override public void renderInventoryBlock(Block block, int metadata, int modelID, RenderBlocks renderer) { Tessellator tessellator = Tessellator.instance; renderer.setRenderBounds(0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F); // crée un "étage" pour le rendu de l'inventaire this.renderInInventory(tessellator, renderer, block, metadata); // sauvegarde "l'étage" pour le rendu de l'inventaire //etc etc } @Override public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) { renderer.setRenderBounds(0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F); // crée un "étage" pour le rendu en jeu renderer.renderStandardBlock(block, x, y, z); //sauvegarde "l'étage" pour le rendu en jeu //etc etc return true; } @Override public boolean shouldRender3DInInventory() { return true; }Je ne sais pas si tu me comprendra avec “étage”

En gros, un bloc plein est égale a 0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F (Xmin, Ymin, Zmin, Xmax, Ymax, Zmax).
Une demi dalle serait 0.0F, 0.0F, 0.0F, 1.0F, 0.5F, 1.0F (la moiter de la hauteur en Ymax, soit 0.5F)Un escalier c’est une demi dalle avec une moitié de demi dalle ! Soit :
0.0F, 0.0F, 0.0F, 1.0F, 0.5F, 1.0F (pour la demi-dalle)
0.0F, 0.5F, 0.5F, 1.0F, 1.0F, 1.0F (pour le haut (j’ai fait ça de tête, pas sur que ce soit exacte)cela fait 2 “étages”, mais faut lui dire que tu passe a un autre étage, c’est la qu’entre en jeu le “renderer.renderStandardBlock(block, x, y, z);” ou “this.renderInInventory(tessellator, renderer, block, metadata);” pour le rendu inventaire.
Ce qui donnerai
renderer.setRenderBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.5F, 1.0F); // crée le premier étage renderer.renderStandardBlock(block, x, y, z); // sauvegarde le premier étage renderer.setRenderBounds(0.0F, 0.5F, 0.5F, 1.0F, 1.0F, 1.0F); // crée le deuxième étage renderer.renderStandardBlock(block, x, y, z); // sauvegarde le deuxième étage qui est aussi le dernier.C’est assez dure a comprendre au début, mais une fois que t’a compris c’est pire que bidon… Je te recommande vivement de toujours avoir une feuille de papier a coté de toi quand tu utilise se genre de truc, car c’est plus simple de ce visualisé la forme et position sur papier que de tête.
Voici en bonus une petite images qui t’aidera pour la “construction de tes étages”.

En espérant avoir été clair ^^’
-
D’accord merci je vais essayer tous ça merci.
Je vous tien au courantedit:
@Override public void renderInventoryBlock(Block block, int metadata, int modelID, RenderBlocks renderer) { Tessellator tessellator = Tessellator.instance; renderer.setRenderBounds( 0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); // crée un "étage" pour le rendu de l'inventaire this.renderInInventory(tessellator, renderer, block, metadata); // sauvegarde "l'étage" pour le rendu de l'inventaire //etc etc } private void renderInInventory(Tessellator tessellator, RenderBlocks renderer, Block block, int metadata) { // TODO Auto-generated method stub } @Override public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) { renderer.setRenderBounds( 0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); // crée un "étage" pour le rendu en jeu renderer.renderStandardBlock(block, x, y, z); //sauvegarde "l'étage" pour le rendu en jeu //etc etc return true; } @Override public boolean shouldRender3DInInventory() { return true; } @Override public int getRenderId() { // TODO Auto-generated method stub return 0; }le bloc reste invisible. Je parie que je n’ai juste pas compris ce que tu m’as dit ….
-
C’est pourtant expliqué dans le tutoriel u_U
Exemple ici :
https://github.com/FFMT/ModTutoriel/blob/master/tutoriel/client/RenderTable.java -
je vien de trouve juste le return 0 que j’avais oublier de changer –’
par contre dans le fonction GL11.glScale(x, y, z); que mettre pour x y et z car 0F me met le chunk en noir et 1F ne fait rien.
-
0 -> réduit à rien
1 -> taille normal
2 -> le double
etc … -
oki

mais quand je mes 2F ca faut pareil que 0F
-
Étrange, sinon mets 2F directement dans le code renderer.setRenderBounds(…
-
sa ne vas pas si je le met dans le setrenderbound car si je met 1 bloc ca fait une zone de 2x2 avec seulement la hitbox la où le bloc est posé
-
Dans tout les cas tu aura seulement la hitbox la où le bloc est placé.
On ne peut pas faire de bloc plus grand que 1x1, les codes de minecraft ne le permet pas.
La seul solution est de faire que lorsqu’on pose le bloc, d’autres blocs se pose à coté, et lorsqu’on le casse, les autres casses avec. Ensuite pour agrandir la hitbox il une fonction dans Block.java. -
D’accord je vais regarder ça merci___
pour la pose des bloc il faut faire comment?
une génération en minX, minY, minZ, maxX, maxY, maxZ ? quelle fonction utiliser? -
Regarde le code de la porte, c’est le meilleur exemple de la pose de 2 blocs en un seul bloc.
-
oki merci

Edit: j’ai atteint 1 stack de message

-
je ne trouve pas la partie du code dans la porte
-
Regarde l’item de la porte pour le placement (tu n’es pas obligé d’avoir un item, tu peux passer par l’item bloc (comme avec les metadata)) et pour la destruction c’est la fonction onBlockHarvested.
Sinon tu peux aussi regarder le lampadaire et le parasol de nanotech mod city :
https://github.com/FFMT/nanotech_mod/blob/master/common/fr/mcnanotech/kevin_68/nanotechmod/city/blocks/BlockLamp.java
https://github.com/FFMT/nanotech_mod/blob/master/common/fr/mcnanotech/kevin_68/nanotechmod/city/blocks/ItemBlockLamp.javahttps://github.com/FFMT/nanotech_mod/blob/master/common/fr/mcnanotech/kevin_68/nanotechmod/city/blocks/ItemBlockSunShade.java
https://github.com/FFMT/nanotech_mod/blob/master/common/fr/mcnanotech/kevin_68/nanotechmod/city/blocks/BlockSunShade.java -
Ok merci
-
je ne trouve pas quelle partie permet de créer un bloc dans le blockdoor.java
-
c’est la fonction onItemUse
-
merci
