Résolu Un item jettable
-
Salut, c’est moi, Eryah, de retour pour faire chier le monde ^^’
J’ai codé un item, et j’aimmerai qu’on puisse le jeter pour occasioner des dégats dans un faible rayon, et enflammer les ennemis dans un plus gros rayon ( 3-4 blocs)
J’ai essayer, mais dès le début, je n’arrive pas a faire spawn l’entitéClasse de l’item
package eryah.usefulthings.init; import net.minecraft.client.Minecraft; import net.minecraft.client.resources.model.ModelResourceLocation; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.item.EntityExpBottle; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.stats.StatList; import net.minecraft.world.World; import net.minecraftforge.fml.common.registry.GameRegistry; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; import eryah.usefulthings.Reference; import eryah.usefulthings.UsefulthingsMod; public class LavaBottle extends Item { public static Item lava_bottle; public static void init(){ lava_bottle = new Item().setUnlocalizedName("lava_bottle").setCreativeTab(UsefulthingsMod.UTTab); } public static void register() { GameRegistry.registerItem(lava_bottle, lava_bottle.getUnlocalizedName().substring(5)); } public static void registerRenders() { registerRender(lava_bottle); } public static void registerRender(Item item) { Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(item, 0, new ModelResourceLocation(Reference.MOD_ID + ":" + item.getUnlocalizedName().substring(5), "inventory")); } public LavaBottle() { } @SideOnly(Side.CLIENT) public boolean hasEffect(ItemStack stack) { return true; } /** * Called whenever this item is equipped and the right mouse button is pressed. Args: itemStack, world, entityPlayer */ public ItemStack onItemRightClick(ItemStack itemStackIn, World worldIn, EntityPlayer playerIn) { if (!playerIn.capabilities.isCreativeMode) { –itemStackIn.stackSize; } worldIn.playSoundAtEntity(playerIn, "random.bow", 0.5F, 0.4F / (itemRand.nextFloat() * 0.4F + 0.8F)); if (!worldIn.isRemote) { worldIn.spawnEntityInWorld(new EntityExpBottle(worldIn, playerIn)); } playerIn.triggerAchievement(StatList.objectUseStats[Item.getIdFromItem(this)]); return itemStackIn; } }
Classe de l’entité
package eryah.usefulthings.entity.item; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.item.EntityXPOrb; import net.minecraft.entity.projectile.EntityThrowable; import net.minecraft.util.BlockPos; import net.minecraft.util.MovingObjectPosition; import net.minecraft.world.World; public class ELavaBottle extends EntityThrowable { public ELavaBottle(World worldIn) { super(worldIn); } public ELavaBottle(World worldIn, EntityLivingBase p_i1786_2_) { super(worldIn, p_i1786_2_); } public ELavaBottle(World worldIn, double p_i1787_2_, double p_i1787_4_, double p_i1787_6_) { super(worldIn, p_i1787_2_, p_i1787_4_, p_i1787_6_); } public ELavaBottle(World worldObj, double posX, double posY, double posZ, int j) { super(worldObj); } /** * Gets the amount of gravity to apply to the thrown entity with each tick. */ protected float getGravityVelocity() { return 0.07F; } protected float getVelocity() { return 0.7F; } protected float getInaccuracy() { return -20.0F; } /** * Called when this EntityThrowable hits a block or entity. */ protected void onImpact(MovingObjectPosition p_70184_1_) { if (!this.worldObj.isRemote) { this.worldObj.playAuxSFX(2002, new BlockPos(this), 0); int i = 3 + this.worldObj.rand.nextInt(5) + this.worldObj.rand.nextInt(5); while (i > 0) { int j = EntityXPOrb.getXPSplit(i); i -= j; this.worldObj.spawnEntityInWorld(new EntityXPOrb(this.worldObj, this.posX, this.posY, this.posZ, j)); } this.setDead(); } } }
Partie Init (Entity) de la MainClass
EntityRegistry.registerModEntity(ELavaBottle.class, "lavaBottle", 420, this.instance, 40, 1, true);
Partie Entity du ClientProxy
RenderingRegistry.registerEntityRenderingHandler(ELavaBlock.class, new RenderItem(Minecraft.getMinecraft().getRenderManager(), new ***Model???***(), 0));
-
Je crois que pour récupérer les entity dans un rayon, c’est ce code là ensuite c’est à toi de modifier les arguments
List list = this.worldObj.getEntitiesWithinAABBExcludingEntity(Entity entity, AxisAlignedBB.getBoundingBox(double d0, double d1, double d2, double d3, double d4, double d5)); Entity entity = (Entity)list.get(l);
Ensuite pour infliger des dégâts c’est ce code là
p_70184_1_.entityHit.attackEntityFrom(DamageSource.causeThrownDamage(this, this.getThrower()), degat en demie coeur);
Exemple pour 2 coeurs enlevés, il faut mettre 4
Et la méthode pour mettre en feu un ennemie est la suivante
entity.setFire(nbre de secondes * 20);
J’espère que je t’aurai aidé
-
RenderingRegistry.registerEntityRenderingHandler(ELavaBlock.class, new RenderItem(Minecraft.getMinecraft().getRenderManager()));
Rien de plus il me semble. -
RenderingRegistry.%(#3333ff)[*registerEntityRenderingHandler*](ELavaBottle.class, new %(#33cc33)[*RenderItem(Minecraft.getMinecraft().getRenderManager*]()));
The method registerEntityRenderingHandler(Class, Render) in the type RenderingRegistry is not applicable for the arguments (Class<elavabottle>, RenderItem)
The constructor RenderItem(RenderManager) is undefined</elavabottle>
-
RenderingRegistry.registerEntityRenderingHandler(ELavaBottle.class, new RenderSnowball(Minecraft.getMinecraft().getRenderManager(), LavaBottle.lava_bottle, Minecraft.getMinecraft().getRenderItem()));
-
Je ne sais pas si çela fontione, car toujours imposible de jetter l’item
-
worldIn.spawnEntityInWorld(new EntityExpBottle(worldIn, playerIn));
Faudrait peut-être remplacer par ton item ici non ?Et encore même problème que la dernière fois –’
lava_bottle = new %(#ff3333)Item.setUnlocalizedName(“lava_bottle”).setCreativeTab(UsefulthingsMod.UTTab);Tu le fait exprès ou quoi ? Je t’ai pourtant déjà expliqué ça. Franchement je vais finir par croire que tu es juste un troll qui me fait perdre mon temps …
Je passe presque 30 min par jour à répondre à tes milliards de demande d’aide, je vais finir par t’exclure de cette section car tu donne l’air de faire aucun effort … -
Ah oui… désolé.
Je lance mon client
Je n’ai pas encore change cela sur les item, et vu que mes items sont justes de copiés collés modifiés eh bien…
Je vais changer cela maintenant afin d’eviter ce problème a nouveau
Je lance quelques chose d’invisible, ce qui est assez invisible (
Je pense savoir pourquoi) -
Et à l’impact il se passe quelque chose ?
-
Oui, vu que je n’est toujours pas modifié le code de l’entité ( CopiéCollé de l’XPBottle ), des gerbes d’xp saute quand je RightClick
C’ets bon, tous mes items sont Extends Item
-
C’est bon je me suis démerdé
Pour ceux qui sont dans le même cas que moi (Entity invisible ), qu’il sachent qu’il faut modifier l’id des entités, sinon il y aura conflit avec ceux déjà existantl’id du mod ce trouve dans la classe principale
EntityRegistry.registerModEntity(ELavaBottle.class, "lavaBottle", **21051**, this.instance, 40, 1, true);
( PS : Sa marche uniquement pour ma potion, mon poulet et mon bateau sont toujours invisible )