Ajouter des particules sur une armure



  • Bonjour,

    J'ai récemment entré dans le développement d'un serveur pvp faction modée

    puis, ils m'ont demandé de mettre des particules genre

    Vous voyez les particules que génère l'enderchest autour de lui ?
    Ils voudraient pareil mais sauf que c'est sur l'armure

    Comment faire ?

    package com.mod.zarbium.items;
    
    import com.mod.zarbium.init.ItemMod;
    import com.mod.zarbium.proxy.Reference;
    
    import net.minecraft.entity.Entity;
    import net.minecraft.entity.player.EntityPlayer;
    import net.minecraft.item.ItemArmor;
    import net.minecraft.item.ItemStack;
    import net.minecraft.potion.Potion;
    import net.minecraft.potion.PotionEffect;
    import net.minecraft.world.World;
    
    public class ItemArmorZarbium extends ItemArmor {
    
    public ItemArmorZarbium(ArmorMaterial material, int metaData) 
    {
    super(material, 0, metaData);
    }
    public String getArmorTexture(ItemStack stack, Entity entity, int slot, String type)
    {
    if(stack.getItem() == ItemMod.zarbium_leggings)
    {
    return Reference.MOD_ID + ":textures/models/armor/zarbium_layer_2.png";
    }
    else if(stack.getItem() == ItemMod.zarbium_helmet || stack.getItem() == ItemMod.zarbium_chestplate || stack.getItem() == ItemMod.zarbium_boots);
    {
    return Reference.MOD_ID + ":textures/models/armor/zarbium_layer_1.png";
    }
    }
    
        public void onArmorTick(World world, EntityPlayer player, ItemStack itemStack)
        {
            if(this == ItemMod.zarbium_chestplate){
                player.addPotionEffect(new PotionEffect(Potion.fireResistance.getId(), 660, 0));
            }
            if(this == ItemMod.zarbium_leggings){
                player.addPotionEffect(new PotionEffect(Potion.resistance.getId(), 660, 0));
            }
            if(this == ItemMod.zarbium_boots){
                player.addPotionEffect(new PotionEffect(Potion.jump.getId(), 660, 0));
            }
            if(this == ItemMod.zarbium_helmet)
            {
                player.addPotionEffect(new PotionEffect(Potion.nightVision.getId(), 660, 0));
            }
    
        }
    
    }
    
    


  • Yo, avec l'event TickEvent.PlayerTickEvent tu peut faire en sorte que si le joueur a l'armure d'équipé alors tu fait un event.player.world.spawnParticle il me semble



  • C'est à dire? Tu peux me donné un exemple ?



  • Tu sais utiliser les events ? ou pas

    1- Creer une class "PlayerEventHandler" dans la class tu met ca :

    
    @SubscribeEvent
    public void onTickEvent(TickEvent.PlayerTickEvent event)
    {
         // et la tu verif si me joueur a l'armure d'aquip si oui alors
         event.player.world.spawnParticle(…);
    }
    
    

    2- dans ta class principale -> method preinit tu rajoute MinecraftForge.EVENT_BUS.register(new PlayerEventHandler());

    si tu comprend pas viens sur le discord du forum et je t'expliquerai https://discordapp.com/invite/0uXCYNHVWGM8sAYS



  • Sinon y'a une méthode tickée pour les ItemArmor.



  • srx ? je savais pas je connaissais larmortick mais pas ca



  • SpyMan , je débute dans le Forge donc oui j'sais pas utilisé les évents


    J'ai essayé mais ça fais une erreur ça me dit de remplacer world par woldObj

    package com.mod.zarbium;
    
    import cpw.mods.fml.common.eventhandler.SubscribeEvent;
    import cpw.mods.fml.common.gameevent.TickEvent;
    
    public class PlayerEventHandler
    {
    @SubscribeEvent
    public void OnTickEvent(TickEvent.PlayerTickEvent event)
    {
    event.player.world.spawnParticle();
    }
    }
    
    


  • remplace cest normal je connais pas les nom exact des variables du moment que c'est un type World



  • ça serrai pas plus simple de le faire dans le onArmorTick?



  • ouai mais pour les particule elle vont par rester tout le temps que le joueur porte l'armure car onArmorTick est appeler uniquement quand le joueur equip larmor et plus apres 
    edit : en fait j'ai un doute



  • Si je me souviens bien onArmorTick est appeler tant que tu portes l'armure au pire fais un println tu verras bien ^^



  • gg bien vu j'ai confondu avec autre chose honte a moi

    ducoup dans ta method onArmortick rajoute
    world.spawnParticle(…);

    
    public void onArmorTick(World world, EntityPlayer player, ItemStack itemStack)
    
    {
    
    if(this == ItemMod.zarbium_chestplate){
    
    world.spawnParticle(...);
    player.addPotionEffect(new PotionEffect(Potion.fireResistance.getId(), 660, 0));
    
    }
    
    if(this == ItemMod.zarbium_leggings){
    
    world.spawnParticle(...);
    player.addPotionEffect(new PotionEffect(Potion.resistance.getId(), 660, 0));
    
    }
    
    if(this == ItemMod.zarbium_boots){
    
    world.spawnParticle(...);
    player.addPotionEffect(new PotionEffect(Potion.jump.getId(), 660, 0));
    
    }
    
    if(this == ItemMod.zarbium_helmet)
    
    {
    
    player.addPotionEffect(new PotionEffect(Potion.nightVision.getId(), 660, 0));
    world.spawnParticle(...);
    
    }
    }