Baton et item de reparation et GUI



  • d'abord je veux que mon ring ai une durabilité minimal de 1
    après qu'il réussisse a réparé mon armure 
    ensuite je voudrais créer un bâton de soin

    se code est bon ??

    import net.minecraft.entity.Entity;
    import net.minecraft.entity.player.EntityPlayer;
    import net.minecraft.item.Item;
    import net.minecraft.item.ItemStack;
    import net.minecraft.world.World;
    
    public class smallring extends Item
    {
    
       public smallring()
       {
        this.setMaxDamage(500);
           this.setMaxStackSize(1);
       }
    
       public void onItemRightClick(ItemStack stack, World world, Entity entity, int slot, boolean selected)
       {
           if(entity instanceof EntityPlayer)
           {
               EntityPlayer player = (EntityPlayer)entity;
               for(int i = 0; i < 4; i++)
               {
                   ItemStack armor = player.getCurrentArmor(i);
                   if(armor != null && armor.getItemDamage() > 0 && stack.getItemDamage() < stack.getMaxDamage())
                   {
                       stack.setItemDamage(stack.getItemDamage() + 1);
                       armor.setItemDamage(armor.getItemDamage() - 1);
                   }
               }
    
           }
       }
    }
    
    


  • N'oublie pas la balise de la version au passage 😛

    Ensuite pour ton bâton de soin, recrée-toi un item où tu override la méthode onItemRightClick pour y ajouter un petit player.heal(4);//le nombre correspond aux nombres de demie coeurs à regen, donc 2 coeurs seront regen

    Ensuite pour le "durabilité minimal de 1", je ne comprends pas tellement …
    Et sinon, j'ai pas test mais ton code pour ta première demande me semble bon à première vue :3

    EDIT = Je ne pense pas que l'instanceof soit nécessaire, tout comme la dernière condition où j'aurai juste mis un null-check de l'armor itemstack. Car c'est impossible d'avoir un item dont le damage soit inférieur à 0, à moins d'avoir un set un nombre négatif avec le setMaxDamage() dans le constructeur. Mais là encore je ne pense pas que MC accepte cela. D'autre part checker si l'item damage < au max damage de l'item est inutile, car tu ne pourras plus rentrer dans la méthode onitemRightClick lorsqu'il sera égal pour la simple et bonne raison que ton item sera cassé 😮



  • @'Plaigon':

    N'oublie pas la balise de la version au passage 😛

    Ensuite pour ton bâton de soin, recrée-toi un item où tu override la méthode onItemRightClick pour y ajouter un petit player.heal(4);//le nombre correspond aux nombres de demie coeurs à regen, donc 2 coeurs seront regen

    Ensuite pour le "durabilité minimal de 1", je ne comprends pas tellement …
    Et sinon, j'ai pas test mais ton code pour ta première demande me semble bon à première vue :3

    je vien de changer le onrightclic par onUpdate

    la durabilite minimal de 1 servira a se que l'object ne se casse pas
      pour se que tu mas dit dans l'edit j'ai pas bien compris



  • Pour ton baton de heal si tu veut te heal

    public ItemStack onItemRightClick(ItemStack item, World world, EntityPlayer player)
    {
    
    player.addPotionEffect(new PotionEffect(Potion.heal.id, 60, 2));
    
    return item;
    }
    
    

    Essaye sa

    Si tu veut heal une autre personne:

    public boolean hitEntity(ItemStack item, EntityLivingBase attackedLiving, EntityLivingBase player)
       {
    
    attackedLiving.setHealth(20);
    
           return true;
       }
    

    Apres je c'est pas si c'est se que tu recherche.

    J'ai pas test le code



  • Je le testerais mai j'y ajouterais un colldown genre 20seconde pour heal une autre perssogne j'esseyerai de fair une fleche comme celle de la 1.9
    T
    Pour heal une autre persogne je pourais utiliser une partie de ta fonction mais se ne sera pas un baton mais une fleche cimme ce



  • 
    @Override
    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", (int) (item.stackTagCompound.getInteger("timer") + 1));
    }
    if(item.stackTagCompound.getInteger("timer") >= (int) (18*20)) //Le 18 corespond au secondes
    {
    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)
    {
    player.heal(22);//22 est le nombre de demi coeur donc 11 coeur la
    //player.addPotionEffect(new PotionEffect(Potion.heal.id, 60, 2)); sinon tu peut utiliser une potion
    item.stackTagCompound.setInteger("timer", 1);
    }
    else
    {
    if(world.isRemote)
    player.addChatComponentMessage(new ChatComponentTranslation("Tu dois attendre que le sortilége se recharge !"));
    item.hasTagCompound();
    }
    return item;
    }
    
    @SideOnly(Side.CLIENT)
    public boolean hasEffect(ItemStack item)
    {
    return item.hasTagCompound() ? (item.stackTagCompound.getInteger("timer") == 0 ? true : false) : false;
    }
    
    }
    
    


  • Merci 🙂


  • Administrateurs

    Ça ne sert à rien de faire une citation si vous répondez au message qui se trouve juste au dessus. Le seul effet que ça a c'est nuire à la lisibilité x)



  • @'robin4002':

    Ça ne sert à rien de faire une citation si vous répondez au message qui se trouve juste au dessus. Le seul effet que ça a c'est nuire à la lisibilité x)

    x) encore une citation  😛



  • Résolu sinon ?



  • @'Plaigon':

    Résolu sinon  ?

    Pas encore  😉

    Ya t'il une onction pour un tp aleatoir dans un rayon defini ?? Si elle existe laquelle



  • Non il n'y en a pas, mais tu peux juste utiliser des randoms (en vérifiant que le bloc est de l'air)

    Envoyé de mon RAINBOW LITE 4G en utilisant Tapatalk



  • **Mercis pour l'info
    **



  • Ah !!oui j'y pense si je veut que mon ring ne casse pas je fait comment

    Je laisse 1de durabilité

    Et sije veux qu'il soit réparable via un craft dans 
    Ma machine a pala



  • Pourquoi souhaites-tu instaurer une dura a ton item si tu ne souhaites pas qu il se casse ? Sa n a pas de sens –'



  • C'est pour quand le joueur veut le ré**parer il le réparé via une table spéciale dont le craft est 
    **
    **Assez cher
    **Je vous les deja dis le 1de dura a pour but d'evité que l'objet disparaisse car il coute cher



  • Eh bien si tu souhaites que ton item soit endommageable, mais incassable en gardant toujours 1 d'utilisation, je te conseille de cancel l'event PlayerDestroyItemEvent en ayant check avant si il s'agissait bien de ton item dont il est question. Apres avoir cancel l'event, je pense que ton item aura automatiquement gardé 1 de dura.



  • Ou sinon plus simple si il te reste 1 de dura, tu empèche cette ligne de s'éxécuter dans ta fonction onItemRightClick : "stack.setItemDamage(stack.getItemDamage() + 1);"



  • Ouep effectivement une petite condition ternaire devrait faire l'affaire 😃



  • j'ai reussi a pour le ring 
    mais quand j'ai ajoutté un gui et des recette mon jeux crash 
    Mes Logs:

    –-- Minecraft Crash Report ----
    
    // Who set us up the TNT?
    
    Time: 01/05/16 01:56
    Description: Initializing game
    
    java.lang.NullPointerException: Initializing game
    at cpw.mods.fml.common.network.NetworkRegistry.registerGuiHandler(NetworkRegistry.java:219)
    at ma.Yeyvo.Paladium.common.ModPaladium.init(ModPaladium.java:223)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at cpw.mods.fml.common.FMLModContainer.handleModStateEvent(FMLModContainer.java:532)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74)
    at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47)
    at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322)
    at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304)
    at com.google.common.eventbus.EventBus.post(EventBus.java:275)
    at cpw.mods.fml.common.LoadController.sendEventToModContainer(LoadController.java:212)
    at cpw.mods.fml.common.LoadController.propogateStateMessage(LoadController.java:190)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74)
    at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47)
    at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322)
    at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304)
    at com.google.common.eventbus.EventBus.post(EventBus.java:275)
    at cpw.mods.fml.common.LoadController.distributeStateMessage(LoadController.java:119)
    at cpw.mods.fml.common.Loader.initializeMods(Loader.java:737)
    at cpw.mods.fml.client.FMLClientHandler.finishMinecraftLoading(FMLClientHandler.java:311)
    at net.minecraft.client.Minecraft.startGame(Minecraft.java:597)
    at net.minecraft.client.Minecraft.run(Minecraft.java:942)
    at net.minecraft.client.main.Main.main(Main.java:164)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
    at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
    at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source)
    at GradleStart.main(Unknown Source)
    
    A detailed walkthrough of the error, its code path and all known details is as follows:
    ---------------------------------------------------------------------------------------
    
    -- Head --
    Stacktrace:
    at cpw.mods.fml.common.network.NetworkRegistry.registerGuiHandler(NetworkRegistry.java:219)
    at ma.Yeyvo.Paladium.common.ModPaladium.init(ModPaladium.java:223)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at cpw.mods.fml.common.FMLModContainer.handleModStateEvent(FMLModContainer.java:532)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74)
    at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47)
    at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322)
    at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304)
    at com.google.common.eventbus.EventBus.post(EventBus.java:275)
    at cpw.mods.fml.common.LoadController.sendEventToModContainer(LoadController.java:212)
    at cpw.mods.fml.common.LoadController.propogateStateMessage(LoadController.java:190)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74)
    at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47)
    at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322)
    at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304)
    at com.google.common.eventbus.EventBus.post(EventBus.java:275)
    at cpw.mods.fml.common.LoadController.distributeStateMessage(LoadController.java:119)
    at cpw.mods.fml.common.Loader.initializeMods(Loader.java:737)
    at cpw.mods.fml.client.FMLClientHandler.finishMinecraftLoading(FMLClientHandler.java:311)
    at net.minecraft.client.Minecraft.startGame(Minecraft.java:597)
    
    -- Initialization --
    Details:
    Stacktrace:
    at net.minecraft.client.Minecraft.run(Minecraft.java:942)
    at net.minecraft.client.main.Main.main(Main.java:164)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
    at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
    at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source)
    at GradleStart.main(Unknown Source)
    
    -- System Details --
    Details:
    Minecraft Version: 1.7.10
    Operating System: Windows 7 (x86) version 6.1
    Java Version: 1.8.0_91, Oracle Corporation
    Java VM Version: Java HotSpot(TM) Client VM (mixed mode), Oracle Corporation
    Memory: 932285952 bytes (889 MB) / 1046937600 bytes (998 MB) up to 1046937600 bytes (998 MB)
    JVM Flags: 3 total; -Xincgc -Xmx1024M -Xms1024M
    AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
    IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0
    FML: MCP v9.05 FML v7.10.99.99 Minecraft Forge 10.13.4.1558 4 mods loaded, 4 mods active
    States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored
    UCHI mcp{9.05} [Minecraft Coder Pack] (minecraft.jar) 
    UCHI FML{7.10.99.99} [Forge Mod Loader] (forgeSrc-1.7.10-10.13.4.1558-1.7.10.jar) 
    UCHI Forge{10.13.4.1558} [Minecraft Forge] (forgeSrc-1.7.10-10.13.4.1558-1.7.10.jar) 
    UCHE paladium{1.0.0} [Paladium] (bin) 
    GL info: ' Vendor: 'Intel' Version: '3.1.0 - Build 9.17.10.3347' Renderer: 'Intel(R) HD Graphics 3000'
    Launched Version: 1.7.10
    LWJGL: 2.9.1
    OpenGL: Intel(R) HD Graphics 3000 GL version 3.1.0 - Build 9.17.10.3347, Intel
    GL Caps: Using GL 1.3 multitexturing.
    Using framebuffer objects because OpenGL 3.0 is supported and separate blending is supported.
    Anisotropic filtering is supported and maximum anisotropy is 16.
    Shaders are available because OpenGL 2.1 is supported.
    
    Is Modded: Definitely; Client brand changed to 'fml,forge'
    Type: Client (map_client.txt)
    Resource Packs: []
    Current Language: Français (France)
    Profiler Position: N/A (disabled)
    Vec3 Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
    Anisotropic Filtering: Off (1)