Résolu Applique murale et plafond.
-
Bonjour à tous,
Je tien a remercier tout particulièrement robin4002 pour sont aide sur la création de mes tapis et de ma trapdoor.
Me voila donc avec encore une nouvelle idée pour une applique et aussi une lampe au plafond, image png pour l’explication.
J’ai appliqué le system de la trapdoor pour mon applique au mur cela donne un effet 3D, et j’aurai voulu faire la même
chose au plafond.![](http://bountycraft.power-heberg.com/Images perso/applique.png)
(ou un autre moyen sinon sans trapdoor et avec si peut de code).
Donc voila je sollicite encore votre aide pour le code.
package crepi.mod; import net.minecraft.block.BlockTrapDoor; import net.minecraft.block.material.Material; import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; public class BlockLamp_Egout extends BlockTrapDoor { protected BlockLamp_Egout(int par1, int par2) { super(par1, Material.wood); setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.125F, 1.0F); setTickRandomly(true); this.setCreativeTab(ModBuild.CreativeTabAccessoire); } public AxisAlignedBB getCollisionBoundingBoxFromPool(World par1World, int par2, int par3, int par4) { int i = par1World.getBlockMetadata(par2, par3, par4) & 7; if (i >= 3) { return AxisAlignedBB.getBoundingBox((double)par2 + minX, (double)par3 + minY, (double)par4 + minZ, (double)par2 + maxX, (float)par3 + 0.5F, (double)par4 + maxZ); } else { return null; } } public boolean isOpaqueCube() { return false; } public boolean renderAsNormalBlock() { return false; } }
Merci encore d’avance…
Bounty…
-
Très intéressent dit moi, j’avais voulue faire un truc de se genre a un moment, mais je n’est jamais demandai de l’aide car jamais fais, si je trouve de quoi t’aidai je serais ravie de le faire :).
-
C’était pour ça que tu voulais faire une trappe ? Tu aura pu faire ça autrement en beaucoup mieux avec un extends Block, le code du piston pour la direction, et le setBlockBound. Je regarde de mon côté après mangé et je t’envoie le résultat.
Bon, j’ai passé plus de une heure pour ça, je pense que je vais faire un tutoriel du coup :
Classe principale :
public static Block lamp
Lamp = new BlockLamp(2005).setHardness(1.0F).setUnlocalizedName("Lamp").func_111022_d("modtutoriel:lamp"); GameRegistry.registerBlock(Lamp, ItemBlockLamp.class, "Lamp");
ItemBlockLamp :
package tutoriel.common; import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; import net.minecraft.world.World; public class ItemBlockLamp extends ItemBlock { public ItemBlockLamp(int id) { super(id); } public boolean placeBlockAt(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ, int metadata) { if (!world.setBlock(x, y, z, this.getBlockID(), metadata, 3)) { return false; } if (world.getBlockId(x, y, z) == this.getBlockID()) { ((BlockLamp)Block.blocksList[this.getBlockID()]).onBlockPlacedByWithSide(world, x, y, z, player, stack, side); Block.blocksList[this.getBlockID()].onPostBlockPlaced(world, x, y, z, metadata); } return true; } }
BlockLamp :
package tutoriel.common; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; import net.minecraft.block.BlockPistonBase; import net.minecraft.block.material.Material; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; public class BlockLamp extends Block { public BlockLamp(int id) { super(id, Material.glass); this.setLightValue(1.0F); this.setCreativeTab(ModTutoriel.TutorialCreativeTabs); } public void onBlockPlacedByWithSide(World world, int x, int y, int z, EntityPlayer player, ItemStack stack, int side) { world.setBlockMetadataWithNotify(x, y, z, side, 2); } public void setBlockBoundsBasedOnState(IBlockAccess iblockAccess, int x, int y, int z) { this.setBlockBoundsForBlockRender(iblockAccess.getBlockMetadata(x, y, z)); } public void setBlockBoundsForBlockRender(int meta) { float f = 0.1875F; if(meta == 0) { this.setBlockBounds(0.0F, 1.0F - f, 0.0F, 1.0F, 1.0F, 1.0F); } else if(meta == 1) { this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, f, 1.0F); } else if(meta == 2) { this.setBlockBounds(0.0F, 0.0F, 1.0F - f, 1.0F, 1.0F, 1.0F); } else if(meta == 3) { this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, f); } else if(meta == 4) { this.setBlockBounds(1.0F - f, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); } else if(meta == 5) { this.setBlockBounds(0.0F, 0.0F, 0.0F, f, 1.0F, 1.0F); } else { this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); } } public void setBlockBoundsForItemRender() { float f = 0.1875F; this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, f, 1.0F); } @SideOnly(Side.CLIENT) public AxisAlignedBB getSelectedBoundingBoxFromPool(World world, int x, int y, int z) { this.setBlockBoundsBasedOnState(world, x, y, z); return super.getSelectedBoundingBoxFromPool(world, x, y, z); } public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { this.setBlockBoundsBasedOnState(world, x, y, z); return super.getCollisionBoundingBoxFromPool(world, x, y, z); } public boolean isOpaqueCube() { return false; } public boolean renderAsNormalBlock() { return false; } }
Et le résultat :
(Désolé pour le massacre, j’ai refais la texture à l’arrache x) -
Bonjour à tous,
Encore un grand merci robin4002.
Sa fonctionne impeccable comme d’habitude, j’ai changer une petite chose dans le code pour que cela fonctionne car je suis en 1.5.2, et je pense que tu est en 1.6.2.
Donc voila ce que j’ai fait.remplacer: Lamp = new BlockLamp(2005).setHardness(1.0F).setUnlocalizedName("Lamp").func_111022_d("modtutoriel:lamp"); par: lamp = new BlockLamp(3080).setHardness(1.0F).setStepSound(Block.soundGlassFootstep).setUnlocalizedName("lamp");
Merci et a bientôt.
Bounty…
-
Bien vue :), Sinon sa ferai bien le sujet d’un tutoriel non ?