• Register
    • Login
    • Search
    • Recent
    • Tags
    • Popular
    • Users
    • Groups

    Solved Créer un item non-lootable.

    1.7.x
    1.7.x
    5
    14
    3433
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • B
      Barduck02 last edited by

      Bonjour à tous.
      J’aimerais savoir si quelqu’un aurait un moyen de créer un item non lootable, même en cas de mort.
      Merci d’avance.

      1 Reply Last reply Reply Quote 0
      • robin4002
        robin4002 Moddeurs confirmés Rédacteurs Administrateurs last edited by

        Tu souhaites faire que l’item reste dans l’inventaire du joueur lorsqu’il meurt, ou qu’il disparaisse totalement lors de la mort ?
        Aussi, tu veux aussi empêcher de jeter l’item manuellement par terre ?

        1 Reply Last reply Reply Quote 0
        • isador
          isador Moddeurs confirmés Modérateurs last edited by

          Moi jz cherche à faire en sorte de désactiver le drop

          1 Reply Last reply Reply Quote 0
          • robin4002
            robin4002 Moddeurs confirmés Rédacteurs Administrateurs last edited by

            Désactiver totalement je vois vraiment pas comment faire.
            Juste supprimer l’item lors du drop, j’ai une idée avec l’eventDeath, ou l’eventDrop, ça devrait le faire.

            1 Reply Last reply Reply Quote 0
            • isador
              isador Moddeurs confirmés Modérateurs last edited by

              Pour la 1.6 je crois que j’avais vue une fonction booléen candrop

              1 Reply Last reply Reply Quote 0
              • B
                Barduck02 last edited by

                J’aurais voulu que l’item reste dans l’inventaire du joueur lors de sa mort, et qu’il ne puisse pas le jeter.

                1 Reply Last reply Reply Quote 0
                • robin4002
                  robin4002 Moddeurs confirmés Rédacteurs Administrateurs last edited by

                  Dans la classe de ton item, essaye de mettre ça :

                  public boolean onDroppedByPlayer(ItemStack item, EntityPlayer player)
                  {
                  return false;
                  }
                  

                  (pas eu le temps de tester)

                  1 Reply Last reply Reply Quote 0
                  • B
                    Barduck02 last edited by

                    J’ai testé, le joueur ne peut pas jeter l’item, mais lorsqu’il meurt, il le drop quand même.

                    1 Reply Last reply Reply Quote 0
                    • robin4002
                      robin4002 Moddeurs confirmés Rédacteurs Administrateurs last edited by

                      Après quelques tests, dans ta classe principale, dans la fonction init mets ça :

                      MinecraftForge.EVENT_BUS.register(new PlayerEventHandler());
                      

                      Et dans la classe PlayerEventHandler :

                      package fr.minecraftforgefrance.tutoriel.common;
                      
                      import net.minecraft.entity.player.EntityPlayer;
                      import net.minecraft.entity.player.InventoryPlayer;
                      import net.minecraft.init.Items;
                      import net.minecraft.item.ItemStack;
                      import net.minecraft.stats.StatList;
                      import net.minecraft.util.MathHelper;
                      import net.minecraftforge.event.entity.EntityJoinWorldEvent;
                      import net.minecraftforge.event.entity.living.LivingDeathEvent;
                      import cpw.mods.fml.common.eventhandler.SubscribeEvent;
                      
                      public class PlayerEventHandler
                      {
                      @SubscribeEvent
                      public void onLivingDeath(LivingDeathEvent event)
                      {
                      if(event.entity instanceof EntityPlayer)
                      {
                      EntityPlayer player = (EntityPlayer)event.entity;
                      if(player.inventory.hasItem(ModTutoriel.itemTutoriel))
                      {
                      this.dropInventory(player.inventory);
                      player.worldObj.getGameRules().setOrCreateGameRule("keepInventory", "true");
                      }
                      }
                      }
                      
                      @SubscribeEvent
                      public void onEntityJointWorld(EntityJoinWorldEvent event)
                      {
                      if(event.entity instanceof EntityPlayer)
                      {
                      event.world.getGameRules().setOrCreateGameRule("keepInventory", "false");
                      }
                      }
                      
                      private void dropInventory(InventoryPlayer inventory)
                      {
                      int i;
                      
                      for(i = 0; i < inventory.mainInventory.length; ++i)
                      {
                      if(inventory.mainInventory* != null)
                      {
                      if(inventory.mainInventory*.getItem() != ModTutoriel.itemTutoriel)
                      {
                      inventory.player.func_146097_a(inventory.mainInventory*, true, false);
                      inventory.mainInventory* = null;
                      }
                      }
                      }
                      
                      for(i = 0; i < inventory.armorInventory.length; ++i)
                      {
                      if(inventory.armorInventory* != null)
                      {
                      inventory.player.func_146097_a(inventory.armorInventory*, true, false);
                      inventory.armorInventory* = null;
                      }
                      }
                      }
                      }
                      

                      Tu as juste à remplacer ModTutoriel.itemTutoriel par TaClassePrincipale.tonItem
                      Si c’est un bloc, utilise Item.getItemFromBlock(TaClassePrincipale.tonBloc)

                      J’ai pas trouvé de solution sans passer par le gameRule keepInventory, de toute façon elle n’est que actif lors du la mort du joueur et est remit à false lorsque le joueur revient dans le monde.

                      1 Reply Last reply Reply Quote 0
                      • B
                        Barduck02 last edited by

                        Merci beaucoup.

                        1 Reply Last reply Reply Quote 0
                        • isador
                          isador Moddeurs confirmés Modérateurs last edited by

                          marche pour 1.6.x?

                          1 Reply Last reply Reply Quote 0
                          • Superloup10
                            Superloup10 Modérateurs last edited by

                            En principe, oui, cela devrais fonctionner à partir de la version 1.5.x.

                            Si vous souhaitez me faire un don, il vous suffit de cliquer sur le bouton situé en dessous.

                            Je suis un membre apprécié et joueur, j'ai déjà obtenu 17 points de réputation.

                            1 Reply Last reply Reply Quote 0
                            • isador
                              isador Moddeurs confirmés Modérateurs last edited by

                              ok merci

                              1 Reply Last reply Reply Quote 0
                              • R
                                rafoudiablol last edited by

                                Si tu veux que l’item soit impossible à poser,tu implémente l’event EntityConstructEvent.
                                Si l’entité est un EntityItem de ton item, tu le kill

                                Même par dispenser et tout ça devient impossible 😉

                                1 Reply Last reply Reply Quote 0
                                • 1 / 1
                                • First post
                                  Last post
                                Design by Woryk
                                Contact / Mentions Légales

                                MINECRAFT FORGE FRANCE © 2018

                                Powered by NodeBB