Plusieurs questions
-
“Est ce que mes question sont-elle possible ?”
N’oublies jamais que tout est possible ^^ ! (à condition d’être déterminé)
Pour ta première question:
Si j’étais toi je regarderai les fonctions de Block.class de ta version de Minecraft, soit tu y trouveras directement ce dont tu as besoin ou un event appeller à chaque tick, à chaque tick tu peux checker si le joueur interragit avec le bloc

Pour ta seconde question:
Euh si j’ai bien compris ta demande est plutôt simple
“Je voudrais faire en sorte de pouvoir changer mon bloc de bedrock en bloc “block1” seulement quand l’enclume a était enlever .
Faire en sorte que si l’encule est encore sur mon bloc de bedrock l’event au dessus est alors impossible.”if(world.getBlock(x, y + 1, z) != Block.anvil) //tonCodeDeTonEvent -
Pour les délais sur le clic droit, il y a la nourriture, l’arc, etc …
Suffit de s’inspirer du code. (setItemInUse / onItemUse / etc …). -
@‘Benjamin Loison’:
“Est ce que mes question sont-elle possible ?”
N’oublies jamais que tout est possible ^^ ! (à condition d’être déterminé)
Pour ta première question:
Si j’étais toi je regarderai les fonctions de Block.class de ta version de Minecraft, soit tu y trouveras directement ce dont tu as besoin ou un event appeller à chaque tick, à chaque tick tu peux checker si le joueur interragit avec le bloc

Pour ta seconde question:
Euh si j’ai bien compris ta demande est plutôt simple
“Je voudrais faire en sorte de pouvoir changer mon bloc de bedrock en bloc “block1” seulement quand l’enclume a était enlever .
Faire en sorte que si l’encule est encore sur mon bloc de bedrock l’event au dessus est alors impossible.”if(world.getBlock(x, y + 1, z) != Block.anvil) //tonCodeDeTonEventSalut !
D’accord merci, j’avais pas du tout pensés au if(world.getblock…) ^^
Merci robin je vais essayer ça
Merci à vous deux

-
Re,
Alors merci benjamin j’ai réussis a faire se que je voulais.
Robin, pour le onitemuse setiteminuse etc… Comment je peux faire ? car moi c’est par un event que je fais la modification du bloc pas avec la classe de l’item.
-
Faut le faire depuis la classe.
Je ne vois rien qui te l’empêche si ? -
Non rien,
Alors j’ai fais ça:
package com.CSC.net.item; import com.CSC.net.block.CSCBlocks; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.item.EnumAction; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.BlockPos; import net.minecraft.util.ChatComponentText; import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.EnumFacing; import net.minecraft.world.World; import net.minecraftforge.event.entity.player.PlayerInteractEvent.Action; public class balai extends Item { public boolean onItemUse(ItemStack stack, EntityPlayer playerIn, World worldIn, BlockPos pos, EnumFacing side, float hitX, float hitY, float hitZ) { if(!worldIn.isRemote) { if(stack != null && stack.getItem() == CSCItems.balai) { IBlockState state = worldIn.getBlockState(pos); if(state.getBlock() == Blocks.bedrock && worldIn.getBlockState(new BlockPos(pos.getX(), pos.getY() + 1, pos.getZ())).getBlock() != Blocks.anvil) { if(stack.getItemUseAction() == EnumAction.BOW) worldIn.setBlockState(new BlockPos(pos.getX(), pos.getY(), pos.getZ()), CSCBlocks.block1.getDefaultState()); } else if(worldIn.getBlockState(new BlockPos(pos.getX(), pos.getY() + 1, pos.getZ())).getBlock() == Blocks.anvil) { playerIn.addChatMessage(new ChatComponentText("Vous ne pouvez pas néttoyez ce bloc car il y a une poubelle dessus, enlevez d'abord la poubelle avant de néttoyer ce bloc !")); } else { playerIn.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + "Action impossible.")); } } } return false; } public EnumAction getItemUseAction(ItemStack stack) { return EnumAction.BOW; } }Mais toujours pas de cooldown je clique une fois le bloc se change direct .
-
public int getMaxItemUseDuration(ItemStack stack) { return 32; // durée } public EnumAction getItemUseAction(ItemStack stack) { return EnumAction.EAT; // type d'animation } public ItemStack onItemRightClick(ItemStack itemStackIn, World worldIn, EntityPlayer playerIn) { playerIn.setItemInUse(itemStackIn, this.getMaxItemUseDuration(itemStackIn)); // met l'item en utilisation return itemStackIn; } public ItemStack onItemUseFinish(ItemStack stack, World worldIn, EntityPlayer playerIn) { // ton action à la fin du temps return stack; } -
Y’a pas blockpos du coup j’ai fais comme ça mais ça marche pas:
package com.CSC.net.item; import com.CSC.net.block.CSCBlocks; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.item.EnumAction; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.BlockPos; import net.minecraft.util.ChatComponentText; import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.EnumFacing; import net.minecraft.world.World; import net.minecraftforge.event.entity.player.PlayerInteractEvent.Action; public class balai extends Item { private BlockPos pos2; public int getMaxItemUseDuration(ItemStack stack) { return 32; // durée } public EnumAction getItemUseAction(ItemStack stack) { return EnumAction.BOW; // type d'animation } public boolean onItemUse(ItemStack stack, EntityPlayer playerIn, World worldIn, BlockPos pos, EnumFacing side, float hitX, float hitY, float hitZ) { pos2 = pos; return false; } public ItemStack onItemRightClick(ItemStack itemStackIn, World worldIn, EntityPlayer playerIn) { playerIn.setItemInUse(itemStackIn, this.getMaxItemUseDuration(itemStackIn)); // met l'item en utilisation return itemStackIn; } public ItemStack onItemUseFinish(ItemStack stack, World worldIn, EntityPlayer playerIn) { if(!worldIn.isRemote) { if(stack != null && stack.getItem() == CSCItems.balai) { BlockPos pos = pos2; IBlockState state = worldIn.getBlockState(pos); if(state.getBlock() == CSCBlocks.block_sale && worldIn.getBlockState(new BlockPos(pos.getX(), pos.getY() + 1, pos.getZ())).getBlock() != Blocks.anvil) { if(stack.getItemUseAction() == EnumAction.BOW) worldIn.setBlockState(new BlockPos(pos.getX(), pos.getY(), pos.getZ()), CSCBlocks.block_propre.getDefaultState()); } else if(worldIn.getBlockState(new BlockPos(pos.getX(), pos.getY() + 1, pos.getZ())).getBlock() == Blocks.anvil) { playerIn.addChatMessage(new ChatComponentText("Vous ne pouvez pas néttoyez ce bloc car il y a une poubelle dessus, enlevez d'abord la poubelle avant de néttoyer ce bloc !")); } else { playerIn.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + "Action impossible.")); } } } return stack; } } -
Non, ça ne risque pas de fonctionner …
Pour savoir où le curseur pointe il faut faire un traceRay -
@‘robin4002’:
Non, ça ne risque pas de fonctionner …
Pour savoir où le curseur pointe il faut faire un traceRaymerci !