MFF

    Minecraft Forge France
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes
    • Forge Events
      • Automatique
      • Foncé
      • Clair
    • S'inscrire
    • Se connecter

    Créer un item non-lootable.

    Planifier Épinglé Verrouillé Déplacé Résolu 1.7.x
    1.7.x
    14 Messages 5 Publieurs 3.9k Vues 1 Watching
    Charger plus de messages
    • Du plus ancien au plus récent
    • Du plus récent au plus ancien
    • Les plus votés
    Répondre
    • Répondre à l'aide d'un nouveau sujet
    Se connecter pour répondre
    Ce sujet a été supprimé. Seuls les utilisateurs avec les droits d'administration peuvent le voir.
    • B Hors-ligne
      Barduck02
      dernière édition par

      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 réponse Dernière réponse Répondre Citer 0
      • robin4002R Hors-ligne
        robin4002 Moddeurs confirmés Rédacteurs Administrateurs
        dernière édition par

        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 réponse Dernière réponse Répondre Citer 0
        • isadorI Hors-ligne
          isador Moddeurs confirmés Modérateurs
          dernière édition par

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

          1 réponse Dernière réponse Répondre Citer 0
          • robin4002R Hors-ligne
            robin4002 Moddeurs confirmés Rédacteurs Administrateurs
            dernière édition par

            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 réponse Dernière réponse Répondre Citer 0
            • isadorI Hors-ligne
              isador Moddeurs confirmés Modérateurs
              dernière édition par

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

              1 réponse Dernière réponse Répondre Citer 0
              • B Hors-ligne
                Barduck02
                dernière édition par

                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 réponse Dernière réponse Répondre Citer 0
                • robin4002R Hors-ligne
                  robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                  dernière édition par

                  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 réponse Dernière réponse Répondre Citer 0
                  • B Hors-ligne
                    Barduck02
                    dernière édition par

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

                    1 réponse Dernière réponse Répondre Citer 0
                    • robin4002R Hors-ligne
                      robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                      dernière édition par

                      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 réponse Dernière réponse Répondre Citer 0
                      • B Hors-ligne
                        Barduck02
                        dernière édition par

                        Merci beaucoup.

                        1 réponse Dernière réponse Répondre Citer 0
                        • isadorI Hors-ligne
                          isador Moddeurs confirmés Modérateurs
                          dernière édition par

                          marche pour 1.6.x?

                          1 réponse Dernière réponse Répondre Citer 0
                          • Superloup10S Hors-ligne
                            Superloup10 Modérateurs
                            dernière édition par

                            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 réponse Dernière réponse Répondre Citer 0
                            • isadorI Hors-ligne
                              isador Moddeurs confirmés Modérateurs
                              dernière édition par

                              ok merci

                              1 réponse Dernière réponse Répondre Citer 0
                              • R Hors-ligne
                                rafoudiablol
                                dernière édition par

                                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 réponse Dernière réponse Répondre Citer 0
                                • 1 / 1
                                • Premier message
                                  Dernier message
                                Design by Woryk
                                ContactMentions Légales

                                MINECRAFT FORGE FRANCE © 2024

                                Powered by NodeBB