1. Le forum de Minecraft-France va définitivement fermer ses portes. Celui-ci restera en lecture seule mais vous ne pourrez plus y apporter de nouveaux topics. Nous vous invitons à nous rejoindre sur le Discord de Minecraft-France qui permet de présenter vos projets, discuter avec la communauté etc.. Merci à tous d'avoir fait vivre ce forum de nombreuses années. Pour nous rejoindre sur Discord, Cliquez ici

Floodatorium

Discussion dans 'Discussions diverses' créé par Endy, 27 Mai 2012.

  1. Kanar

    Kanar Ami des Creepers

    Inscrit:
    5 Nov 2012
    Messages:
    11 119
    Points:
    304
    Sexe:
    Homme
    Du Wither Skeleton, le truc c'est qu'il partage pas la même classe que le Skeleton ? Hanw...
    Au pire, si tu trouves le moyen d'enlever et/ou d'ajouter un loot sur un mob quelconque, même le cochon, je suis preneur ! J'vais chercher du miens aussi. Merci.
     
  2. robin4002

    robin4002 Support Technique
    Staff

    Inscrit:
    17 Août 2012
    Messages:
    5 478
    Points:
    229
    Sexe:
    Homme
    Tu vas m'aimer :) :
    Donc au final, il y a un event pour le drop d'item, avec dedans une ArrayList qui est la list des drop, et une ArrayList ça peut être nettoyé, et on peut y ajouter des trucs. Du coup ça donne :
    Dans la classe principale, dans ton void Init :
    Code (java):
            MinecraftForge.EVENT_BUS.register(new EventDrop());
    Et la classe EventDrop :
    Code (java):
    package tutoriel.common;
     
    import net.minecraft.entity.item.EntityItem;
    import net.minecraft.entity.monster.EntitySkeleton;
    import net.minecraft.item.Item;
    import net.minecraft.item.ItemStack;
    import net.minecraftforge.event.ForgeSubscribe;
    import net.minecraftforge.event.entity.living.LivingDropsEvent;
     
    public class EventDrop
    {
        @ForgeSubscribe
        public void onLivingDrops(LivingDropsEvent event)
        {
            if(event.entity instanceof EntitySkeleton) //Vérifie que c'est un skeleton
            {
                EntitySkeleton skeleton = (EntitySkeleton)event.entity; //on instancie l'entity Skeleton
                if(skeleton.getSkeletonType() == 1) // on vérifie si c'est un wither skeleton
                {
                    event.drops.clear(); //on vide l'array list de drop
                   
                    //nouveau entity item
                    EntityItem nouveaudrop = new EntityItem(event.entity.worldObj, event.entity.posX, event.entity.posY, event.entity.posZ, new ItemStack(Item.emerald, 2));
                    //ajout du nouveau drop
                    event.drops.add(nouveaudrop);
                }
            }
        }
    }
     
    Tout est expliqué en commentaire, je pense que ça me servira aussi plus tard et ça me fait une idée de tutoriel en plus :p
     
    • J'aime J'aime x 1
  3. Kanar

    Kanar Ami des Creepers

    Inscrit:
    5 Nov 2012
    Messages:
    11 119
    Points:
    304
    Sexe:
    Homme
    Dis, tu veux bien m'épouser ? *-*

    Et plus sérieusement, tu déniches ça où ? D:
     
  4. robin4002

    robin4002 Support Technique
    Staff

    Inscrit:
    17 Août 2012
    Messages:
    5 478
    Points:
    229
    Sexe:
    Homme
    L'event bus, j'ai regardé dans les packages net.minecraftforge.event.entity, puis j'ai vu cette classe :
    net.minecraftforge.event.entity.living.LivingDropsEvent
    Du coup j'ai regardé les variables qu'il y avait dedans, et ensuite le code je l'ai déniché dans ma tête
     
  5. Kanar

    Kanar Ami des Creepers

    Inscrit:
    5 Nov 2012
    Messages:
    11 119
    Points:
    304
    Sexe:
    Homme
    *S'incline devant ta puissance*
     
  6. Nolan-XX

    Nolan-XX Modérateur
    Staff

    Inscrit:
    29 Déc 2012
    Messages:
    10 234
    Points:
    304
    Sexe:
    Homme
    Kanar qui s'incline , c'est un jour mémorable Oo
     
    • J'approuve J'approuve x 1
  7. azertyg1

    azertyg1 Résident de l'End

    Inscrit:
    25 Juin 2011
    Messages:
    5 972
    Points:
    227
    Sexe:
    Homme
  8. robin4002

    robin4002 Support Technique
    Staff

    Inscrit:
    17 Août 2012
    Messages:
    5 478
    Points:
    229
    Sexe:
    Homme
    J'avais codé EnderOre en 1.3.2 -> 1.4.7, mais j'ai lancé tomber le mod pour le reprendre en plus complexe (même si le mod avait quelque intégration avec IC2/BuildCraft/RailCraft, il était plutôt basique)

    Mais pour l'instant je bosse sur Nanotech mod (à l'origine créer par kevin_68, un ami irl)
     
    • Informatif Informatif x 1
  9. Kanar

    Kanar Ami des Creepers

    Inscrit:
    5 Nov 2012
    Messages:
    11 119
    Points:
    304
    Sexe:
    Homme
    Il consiste en quoi ?

    Sinon, ton code marche parfaitement pour enlever/ajouter un drop mais j'aimerais faire en sorte de supprimer qu'un seul item sur toute la liste, j'ai essayé avec
    Code (java):
    event.drops.remove(Item.bone);
    pour tester, mais sans succès, tu n'aurais pas de nouveau une petite idée ? :3

    Quand tu compares mon niveau au sien, oui, j'ai de quoi m'incliner. :p
     
  10. robin4002

    robin4002 Support Technique
    Staff

    Inscrit:
    17 Août 2012
    Messages:
    5 478
    Points:
    229
    Sexe:
    Homme
    Contrairement à son nom, il ajoute que des trucs fun codé de base pour le serveur, mais on préfère partager pour que tout le monde puisse en profiter :)
    Donc il n'a pas de thème, il y a une dimension dévaster (qui lag horriblement pour l'instant) des minerais d'or et de diamant piégés, un bloc qui accélère et un qui ralenti le joueur quand il est dessus, un qui le fait sauter, un bloc émet de la fumé (pratique pour les cheminées), une poubelle qui te donne de l'xp quand tu jettes des trucs dedans, un bloc de confusion qui te donne pleins d'effet de potion quand tu vas dessus, des blocs de stone/stone brique qui sont influencé par la gravité, du sodium qui explose au contacte de l'eau, un projecteur qui fait de la lumière comme le beacon avec possibilité de changer la couleur à l'aide d'un gui (justement il faut que je fini les packets de ce bloc car pour l'instant quand quelqu'un change la couleur ça ne change pas chez les autres joueurs et la deco/reco reset le bloc), et la tête de la mort.

    Niveau item, un kit d'outils et armure "nanomite" (avec rien de spécial pour l'instant), une armure mystérieuse, la faux de la mort, 3 nouveaux arcs très puissant, des lunettes de fou, 1 nouveau cd tout fait et 16 cd modifiable (description en dessous + le son) et quelques autres items pour les craft.

    Niveau mob, comme il y a la tête de la mort et ça faux, elle est bien sur présente :p
    [​IMG] Elle est de loin, quand elle est à côté de toi, tu te sens petit x)
    Et pleins d'autres mobs hard (super skeleton, super creeper, creeper volant) et un fou.

    On peut trouver sur google quelques vidéo de la version 1.x.x du mod, mais la on a presque recodé tout le mod (utilisation des metadata, la plupart des blocs et items cités sont nouveau, The Death à été refait etc ...)

    J'ai encore pas mal de travail avant qu'on puissent publier le mod (dimension + finir les packets du projecteur), et kévin est en vacance pour une semaine en plus donc je bosse tout seul pour l'instant (il va être content quand je vais lui dire que j'ai corrigé les problèmes de packets :p)
    On prévoit de publier en 1.5.2, il faut encore passer le mod en 1.6.2 juste après.

    Voila, du coup j'ai fais une description rapide, mais on en refera une complète du mod d'ici la semaine prochaine quand on le publiera.


    Pour ton problème, L'ArrayList drop est du type "EntityItem", et toi tu essaye d'enlever un item. Il faut que tu fasse comme j'ai fais pour ajouter un drop :
    Code (java):
                EntityItem removedrop = new EntityItem(event.entity.worldObj, event.entity.posX, event.entity.posY, event.entity.posZ, new ItemStack(Item.bone, 1));
                event.drops.remove(removedrop);
    Le problème c'est que ducoup ça va que le faire si un seul os est dropé exactement aux coordonnées de l'entity, donc ça risque de très mal fonctionner voir pas du tout. => en effet, pas du tout

    Ducoup j'ai essayé un autre truc :
    Code (java):
                    for(int i = 0; i < event.drops.size(); i ++)
                    {
                        if(event.drops.get(i).getEntityItem().itemID == Item.bone.itemID)
                        {
                            event.drops.remove(i);
                        }
                    }
    Une boucle for qui commence à 0 et qui se fini à la taille de l'ArrayList du drop
    Si l'id de l'itemStack de l'entityItem du drop d'id i a le même id que l'id de l'os, alors il supprime l'ItemStack droppé d'id i. Mais la une fois de plus, ça n'a pas l'air de fonctionner à 100%, certains skeleton drop quand même un os, pourtant si j'ajoute ça dans la condition :
    Code (java):
                    for(int i = 0; i < event.drops.size(); i ++)
                    {
                        if(event.drops.get(i).getEntityItem().itemID == Item.bone.itemID)
                        {
                            event.drops.remove(i);
                            System.out.println("drop supprime pour l'id " + i);
                        }
                    }
    Il m'affiche bien dans la console : 2013-07-26 18:13:55 [INFO] [STDOUT] drop supprime pour l'id 0, donc ça prouve que ça marche. D'ailleurs je viens de remarque pour ce qui drop quand même l'os, l'id est 1 : 2013-07-26 18:16:16 [INFO] [STDOUT] drop supprime pour l'id 1
    Pourtant le drop d'id 0 devrait normalement aussi être supprimer comme c'est une boucle ...

    Donc ça marche, mais pas à 100 %, ceux qui drop deux os en drop que 1 à la place de aucun.

    ÉDIT : on est en train de squatter le floodatorium pour du modding ^^ Enfin pas grave, au moins on lui donne une activité utile :)
     
    • J'aime J'aime x 1
  11. Kanar

    Kanar Ami des Creepers

    Inscrit:
    5 Nov 2012
    Messages:
    11 119
    Points:
    304
    Sexe:
    Homme
    Ça a juste l'air d'être un mod complètement What The Fuckest !

    Merci quand même pour ton aide apportée ! Pour l'instant à sera très bien qu'un os au lieu de deux ! :D

    Au pire, le floodatorium est fait pour parler de tout et de rien, puis on ne flood pas inutilement donc où est le problème ? :p
     
  12. Tayse

    Tayse Mineur de Diamants

    Inscrit:
    11 Nov 2012
    Messages:
    2 543
    Points:
    153
    Sexe:
    Homme
    Kanar, ça flood comment sur le forum de la Floodarmy ?
     
  13. Nolan-XX

    Nolan-XX Modérateur
    Staff

    Inscrit:
    29 Déc 2012
    Messages:
    10 234
    Points:
    304
    Sexe:
    Homme
    La fin de Peace Walker : Oo
     
  14. Tayse

    Tayse Mineur de Diamants

    Inscrit:
    11 Nov 2012
    Messages:
    2 543
    Points:
    153
    Sexe:
    Homme
    La fin de Mirai Nikki : :O
     
  15. Nolan-XX

    Nolan-XX Modérateur
    Staff

    Inscrit:
    29 Déc 2012
    Messages:
    10 234
    Points:
    304
    Sexe:
    Homme
    Connais pas
     

Partager cette page