Résolu Lancer un laser avec un sceptre
-
Bonjour,
J’aimerais lancer un laser depuis mon sceptre afin que lorsqu’il touche un joueur : Il le soigne/regen/poison/wither….
Mes sceptre jusqu’à la ne soigne que le joueur qui clique droit dessus
Si vous avez une idée -
Tu vas devoir crée une entity pour ton laser et passe ton code
-
Bah j’ai un début de code :
package fr.Mosca421.Arthania.Items; import java.util.List; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.potion.Potion; import net.minecraft.potion.PotionEffect; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.ChatComponentText; import net.minecraft.util.ChatComponentTranslation; import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; public class Sceptrespeed extends Item { public Sceptrespeed() { setMaxDamage(16); setMaxStackSize(1); } public void onUpdate(ItemStack item, World world, Entity player, int slotIndex, boolean inHand) { if (item.hasTagCompound()) { if (item.stackTagCompound.getInteger("timer") > 0) { item.stackTagCompound.setInteger("timer", item.stackTagCompound.getInteger("timer") + 1); } if (item.stackTagCompound.getInteger("timer") >= 120) { item.stackTagCompound.setInteger("timer", 0); } } super.onUpdate(item, world, player, slotIndex, inHand); } public ItemStack onItemRightClick(ItemStack item, World world, EntityPlayer player) { if (!item.hasTagCompound()) { item.setTagCompound(new NBTTagCompound()); item.stackTagCompound.setInteger("timer", 0); } if (item.stackTagCompound.getInteger("timer") == 0) { item.damageItem(1, player); player.addPotionEffect(new PotionEffect(Potion.moveSpeed.id, 25, 9)); item.stackTagCompound.setInteger("timer", 1); } else if (world.isRemote) { player.addChatComponentMessage(new ChatComponentTranslation(EnumChatFormatting.RED + "Tu dois attendre que le baton se recharge !", new Object[0])); } return item; } }
celui du baton a qui je veux mettre le laser :
package fr.Mosca421.Arthania.Items; public class Sceptreenemy extends Item { }
très complet
-
Reguarde sur les entity projectile
-
Tu peux regarder dans EntityThrowble, EntityArrow, EntityProjectile et EntityFireball, à toi de voir ce qui se rapproche le plus de ce que tu veux.
-
Après je pense que tu vas + galérer pour le rendu, étant donné que ça te demanderas de certaines connaissances en OpenGL
-
Je pense oui, personnellement, j’avais voulu faire un truc du genre lancé par une entité, j’avais tout bien fait, mais j’ai jamais réussi pour la rotation…et finalement j’ai un laser qui n’est pas une entité et qui est rendu entre le mob et la cible, comme les guardian.
-
Oui pour le rendu c’est trés compliqué
-
Je me doute que je le rendu va etre dur mais bon sans truc dur on apprend pas
-
J’ai réussi a faire un truc pas trop mal (je me base sur une enderpearl pour l’instant mais la je bloque sur un petit truc : comment mettre un effet lorsque la boule le touche
Avez-vous une idée ? -
Tout dépend, si tu es passé par une classe héritant de EntityThrowable, sers toi de la méthode onImpact avec l’argument de type MovingObjectPosition.
Sinon si tu es passé par une classe héritant de Entity (ou EntityLiving), crées toi ta propre instance de MovingObjectPosition dans la méthode onUpate. La dernière fois que j’ai fait ça, c’était en 1.2.5, je m’étais servi de la classe Vec3D. Après je ne sais pas trop ce que ce code donnerait en 1.7.2 -
J’ai réussi les gars c’est magnifique xD bon ça a été chiant maus c’est bon thx
-
Tu pourrais donner ton code pour aider pls
-
Pas compliqué, sur quoi as-tu du mal ? Override onItemRightClick, crée un raytrace d’une portée que tu veux, crée l’instance de ta nouvelle entity laser, setLocation là et place toi uniquement côté server pour la faire spawn
Facile, hein ?