Les dalles
-
Tu as bien fais le ItemBlock qui va avec?
-
voila le code du Itemblock (edit:jai formatée )
package modTutoriel.common; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; import net.minecraft.util.Icon; import net.minecraft.world.World; public class ItemBlockTutorialSlabv0 extends ItemBlock { private final boolean isFullBlock; private final Block theHalfSlab; private final Block doubleSlab; public ItemBlockTutorialSlabv0(int id) { super(id); this.theHalfSlab = modTutoriel.v0SingleSlab; this.doubleSlab = modTutoriel.v0DoubleSlab; if(id - 256 == modTutoriel.v0DoubleSlab.blockID) { this.isFullBlock = true; } else { this.isFullBlock = false; } this.setMaxDamage(0); this.setHasSubtypes(true); } @SideOnly(Side.CLIENT) public Icon getIconFromDamage(int metadata) { return Block.blocksList[this.itemID].getIcon(2, metadata); } public int getMetadata(int metadata) { return metadata; } public String getUnlocalizedName(ItemStack stack) { return ((BlockSlabv0)theHalfSlab).getFullSlabName(stack.getItemDamage()); } public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float par8, float par9, float par10) { if (this.isFullBlock) { return super.onItemUse(stack, player, world, x, y, z, side, par8, par9, par10); } else if (stack.stackSize == 0) { return false; } else if (!player.canPlayerEdit(x, y, z, side, stack)) { return false; } else { int i1 = world.getBlockId(x, y, z); int j1 = world.getBlockMetadata(x, y, z); int k1 = j1 & 7; boolean flag = (j1 & 8) != 0; if ((side == 1 && !flag || side == 0 && flag) && i1 == this.theHalfSlab.blockID && k1 == stack.getItemDamage()) { if (world.checkNoEntityCollision(this.doubleSlab .getCollisionBoundingBoxFromPool(world, x, y, z)) && world.setBlock(x, y, z, this.doubleSlab.blockID, k1, 3)) { world.playSoundEffect( (double) ((float) x + 0.5F), (double) ((float) y + 0.5F), (double) ((float) z + 0.5F), this.doubleSlab.stepSound.getPlaceSound(), (this.doubleSlab.stepSound.getVolume() + 1.0F) / 2.0F, this.doubleSlab.stepSound.getPitch() * 0.8F); –stack.stackSize; } return true; } else { return this.placeDoubleSlabFromTop(stack, player, world, x, y, z, side) ? true : super.onItemUse(stack, player, world, x, y, z, side, par8, par9, par10); } } } @SideOnly(Side.CLIENT) public boolean canPlaceItemBlockOnSide(World world, int x, int y, int z, int side, EntityPlayer player, ItemStack stack) { int i1 = x; int j1 = y; int k1 = z; int id = world.getBlockId(x, y, z); int meta = world.getBlockMetadata(x, y, z); int j2 = meta & 7; boolean flag = (meta & 8) != 0; if((side == 1 && !flag || side == 0 && flag) && id == this.theHalfSlab.blockID && j2 == stack.getItemDamage()) { return true; } else { if(side == 0) { --y; } if(side == 1) { ++y; } if(side == 2) { --z; } if(side == 3) { ++z; } if(side == 4) { --x; } if(side == 5) { ++x; } id = world.getBlockId(x, y, z); meta = world.getBlockMetadata(x, y, z); j2 = meta & 7; flag = (meta & 8) != 0; return id == this.theHalfSlab.blockID && j2 == stack.getItemDamage() ? true : super.canPlaceItemBlockOnSide(world, i1, j1, k1, side, player, stack); } } private boolean placeDoubleSlabFromTop(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side) { if(side == 0) { --y; } if(side == 1) { ++y; } if(side == 2) { --z; } if(side == 3) { ++z; } if(side == 4) { --x; } if(side == 5) { ++x; } int i1 = world.getBlockId(x, y, z); int j1 = world.getBlockMetadata(x, y, z); int k1 = j1 & 7; if(i1 == this.theHalfSlab.blockID && k1 == stack.getItemDamage()) { if(world.checkNoEntityCollision(this.doubleSlab.getCollisionBoundingBoxFromPool(world, x, y, z)) && world.setBlock(x, y, z, this.doubleSlab.blockID, k1, 3)) { world.playSoundEffect((double)((float)x + 0.5F), (double)((float)y + 0.5F), (double)((float)z + 0.5F), this.doubleSlab.stepSound.getPlaceSound(), (this.doubleSlab.stepSound.getVolume() + 1.0F) / 2.0F, this.doubleSlab.stepSound.getPitch() * 0.8F); --stack.stackSize; } return true; } else { return false; } } public boolean isOpaqueCube() { return false; } public boolean renderAsNormalBlock() { return false; } }
-
S’il te plaît, fait juste CTRL+Maj+F dans ton code, la c’est pas formaté, pas envie de le lire presque.
-
Je tiens à dire que nous ne sommes pas obliger de créer une nouvelle classe item block:
Mettez:public static BlockHalfSlab singleSlab, doubleSlab;
A la place de:
public static Block singleSlab, doubleSlab;
Et rajouter dans la partie Post Init:
Item.itemsList[singleSlab.blockID] = new ItemSlab(singleSlab.blockID-256, (BlockHalfSlab)singleSlab, (BlockHalfSlab)doubleSlab, false);
Et à la place de:
GameRegistry.registerBlock(singleSlab, ItemBlockSlab.class "doubleSlab"); GameRegistry.registerBlock(doubleSlab, ItemBlockSlab.class "doubleSlab");
Mettez tout simplement:
GameRegistry.registerBlock(singleSlab, "singleSlab"); GameRegistry.registerBlock(doubleSlab, "doubleSlab");
-
Oui, mais c’est une méthode vanilla, c’est pas bon pour l’itemTracker de FML. Logiquement dans les logs tu devrais avoir FML qui râle.
-
Possible de le up en 1.7.x ? :3
-
Quand j’aurai le temps, donc après le bac.
-
Je sais qu’on va dire que je répète la même chose que les autre mais vue que je pense que le bac est passer (a part si t’était en 1er et non terminal) possible de le UP en 1.7.10
-
Je peux te fournir le code si tu le souhaites via skype
-
Whaaa, faut que j’arrête de promettre des choses que je ne peux pas faire.
Sinon : http://www.minecraftforgefrance.fr/showthread.php?tid=788#classe3 -
ça marche en 1.7.10 ?
-
En adaptant tout ce qui concerne les id de bloc, oui.
-
@‘robin4002’:
En adaptant tout ce qui concerne les id de bloc, oui.
J’ai réussi à faire les dalles
-
Hello,
C’est encore moi mais je vais pas être trop chiant cette fois… Concrètement, si je veux faire plus de 8 dalles, je dois avoir plusieurs class d’itemblockslab et de blockslab ou bien je n’ai pas très bien compris ? -
C’est ça, il faudra plusieurs classes de blocs.
-
Simple et super efficace comme tuto avec une réponse précise, merci !