MFF

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

    Extended Entity Properties

    Planifier Épinglé Verrouillé Déplacé Les entités
    1.7.2
    127 Messages 21 Publieurs 39.8k Vues 5 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.
    • isadorI Hors-ligne
      isador Moddeurs confirmés Modérateurs
      dernière édition par

      Merci 🙂

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

        Il y a une petite erreur a ce niveau là (par rapport au fait de pouvoir tapez des commandes)

        public int getMoney() {
        return this.money;
        }
        

        Ici ce n’est pas un “public int getMoney()” mais plutôt un “public long getMoney()” étant donnée que juste au dessus on a déclarer la Money comme étant un “long”

        public final static String EXT_PROP_NAME = "ExtPropTuto";
        
        private final EntityPlayer player;
        
        public long money;
        public long maxMoney;
        

        C’est possible d’avoir un GitHub avec le codage au complet car j’ai du mal a situé ou doivent être tous les éléments indiquer dans le tuto ?

        merci d’avance 🙂

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

          Heu pour le github, je n’en ai pas fait un, je me base sur celui de mon mod Ratchet & Clank ( http://github.com/Gugu42/ratchetandclankmod/ )

          "If you have a comprehensive explanation for everything then it decreases uncertainty and anxiety and reduces your cognitive load. And if you can use that simplifying algorithm to put yourself on the side of moral virtue then you’re constantly a good person with a minimum of effort."
          ― Jordan B. Peterson

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

            Le problème est que visiblement dans ce GitHub une ancienne version de “FFMT” car on utilise plus ceci :

            public class PacketRefill extends FFMTPacket {
            
            public void encodeInto(ChannelHandlerContext ctx, ByteBuf buffer) {
            
            public void decodeInto(ChannelHandlerContext ctx, ByteBuf buffer) {
            

            On utilise quelques choses de similaire a ça :

            public class PacketRefill extends AbstractPacket {
            
            public void writeData(ByteBuf buffer) throws IOException {
            
            public void readData(ByteBuf buffer) {
            

            Donc je peux pas vraiment m’en servir 😕 je regarde un peu plus car moi ce qui m’interesse dans le GitHub c’etait ou été placer les EVENT HANDLER.


            Je vois que sur le GitHub tu utilise une classe “RcEventHandler.java”

            Et que tu l’initialise ici :

            @EventHandler
            public void PostInit(FMLPostInitializationEvent event) {
            NetworkRegistry.INSTANCE.registerGuiHandler(this, new GuiHandler());
            MinecraftForge.EVENT_BUS.register(new RcEventHandler());
            

            C’est bien ça ?

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

              Mais … c’est exactement la même chose, les méthodes sont juste renommées ._.

              "If you have a comprehensive explanation for everything then it decreases uncertainty and anxiety and reduces your cognitive load. And if you can use that simplifying algorithm to put yourself on the side of moral virtue then you’re constantly a good person with a minimum of effort."
              ― Jordan B. Peterson

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

                Oui oui ça moi je l’est compris mais début j’avais du mal … car j’étais débutant 😛 tu vois ce que je veux dire … c’est en discutant avec vous et en posant des question qu’on comprend tous ça… ce qui est malheureux pour un tuto ou on devrait pas vous déranger … surtout pour des choses si futile 😉

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

                  Je me permet d’ajouter une correction à faire :

                  J’ai trouver, en faite il y a beaucoup d’erreur dans le tuto lié au type de variable de “Money” :
                  @Gugu42:

                  Maintenant, nous allons ajouter un identifiant à la propriété, ainsi que les variables qu’elle utilisera. Dans notre cas, le joueur cible, de l’argent, et une limite d’argent.

                  public final static String EXT_PROP_NAME = "ExtPropTuto";
                  
                  private final EntityPlayer player;
                  
                  public long money;
                  public long maxMoney;
                  

                  L’utilisation d’un long permet un stockage de grande taille pour votre argent. Si vous ne comptez pas atteindre plus de 2.147.483.647 d’argent, utilisez un int.

                  Au début du tuto on nous demande de mettre un long si on veut pouvoir utiliser une grosse capacité de stockage de d’argent.

                  Mais dans le reste du tuto on vois quasiment que le type “int” sur les variable de “Money” et “maxMoney”.

                  Soit je modifie les type “int” en “long” mais un autre problème ce pose a ce niveau du tuto :

                  @Override
                  public void writeData(ByteBuf buffer) throws IOException
                  {
                  buffer.writeInt(maxSoif);
                  buffer.writeInt(Soif);
                  }
                  
                  

                  Ici il faut remplacer par des type “Long” :

                  @Override
                  public void writeData(ByteBuf buffer) throws IOException
                  {
                  buffer.writeLong(maxSoif);
                  buffer.writeLong(Soif);
                  }
                  
                  

                  Voilà je rajoute ceci en réponse au tuto pour penser à le modifier 😉

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

                    Je viens de voir qu’il n’y a pas que à ce niveau là qu’il y a des problèmes entres le type de variable “Int” et “Long”.

                    Faites bien attention à tous le tuto, car toutes les variables sont déclarer en type “Int” alors que la déclaration des variables ont étés faites en “Long”

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

                      @‘BlackDrag00n’:

                      Je viens de voir qu’il n’y a pas que à ce niveau là qu’il y a des problèmes entres le type de variable “Int” et “Long”.

                      Faites bien attention à tous le tuto, car toutes les variables sont déclarer en type “Int” alors que la déclaration des variables ont étés faites en “Long”

                      J’ai écrit 95% du tutoriel sur le forum directement, avec le code en mémoire, donc il se peut que j’ai fait des erreurs. Je corrige ça 😄

                      "If you have a comprehensive explanation for everything then it decreases uncertainty and anxiety and reduces your cognitive load. And if you can use that simplifying algorithm to put yourself on the side of moral virtue then you’re constantly a good person with a minimum of effort."
                      ― Jordan B. Peterson

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

                        @‘Gugu42’:

                        @‘BlackDrag00n’:

                        Je viens de voir qu’il n’y a pas que à ce niveau là qu’il y a des problèmes entres le type de variable “Int” et “Long”.

                        Faites bien attention à tous le tuto, car toutes les variables sont déclarer en type “Int” alors que la déclaration des variables ont étés faites en “Long”

                        J’ai écrit 95% du tutoriel sur le forum directement, avec le code en mémoire, donc il se peut que j’ai fait des erreurs. Je corrige ça 😄

                        Pas de problème t’inquiète pas je ne t’engueulerai te “gronderai” pas (pourtant a la demande de robin4002) LoL

                        Je sais a qu’elle point c’est pas évident de fournir des tutoriels 😉

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

                          Peux tu nous fournir ta classe “Fr_mod.java” ?

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

                            @‘mindany2’:

                            Ok mais il y a rien de spécial concernant cette classe mise à part les deux lignes envoyés

                            Pourtant dans ton erreur on vois :

                            at lmac.sonic.Fr_mod.<clinit>(Fr_mod.java:51)
                            

                            Tu as mis quoi comme “modid” dans “@Mod” ?


                            Tu as une erreur ici aussi :

                            @Instance("Fr_mod ")
                            

                            Un espace en trop après “Fr_mod” 😉 sa serai plutôt :

                            @Instance("Fr_mod")
                            ```</clinit>
                            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

                              Ton modid c’est bien Fr_mod ?
                              Car si oui, ton instance est fausse, tu as un espace juste après.

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

                                oui c’est ce que je disais robin4002 😉

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

                                  @‘BlackDrag00n’:

                                  Tu as mis quoi comme “modid” dans “@Mod” ?

                                  Peux tu répondre à la question stp ?

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

                                    Je ne comprend pas tu dit qu’avec ceci du crash :

                                    public static final FFMTPacketHandler rcModPacketHandler = new FFMTPacketHandler("fr.lmac.packet", "Fr_mod");
                                    

                                    Mais après tu dis que tu ne crash pas avec :

                                    public static final FFMTPacketHandler rcModPacketHandler = new FFMTPacketHandler("fr.lmac.packet", "Fr_mod");
                                    

                                    Hors ces deux lignes sont identiques 😕

                                    A mon avis ta voulu dire ceci :

                                    public static final FFMTPacketHandler rcModPacketHandler = new FFMTPacketHandler("fr.lmac.packet", "Fr_mod", "Fr_mod");
                                    

                                    Mais cette dernière ligne te faire crash ou pas du coup ?

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

                                      @‘robin4002’:

                                      Il y a eu des changements récemment dans FFMT libs, j’ai refais le système de paquet car l’ancien provoquait des fuites de mémoire.
                                      Tu peux regarder sur nanotech mod comment l’utiliser :
                                      https://github.com/FFMT/nanotech_mod/blob/master/common/fr/mcnanotech/kevin_68/nanotechmod/main/core/NanotechMod.java#L61
                                      https://github.com/FFMT/nanotech_mod/tree/master/common/fr/mcnanotech/kevin_68/nanotechmod/main/network/packet

                                      Voici ce que robin ma répondu sur ce problème je te laisse un peu chercher 🙂

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

                                        Effectivement en utilisant

                                        public static final PacketManager rcModPacketHandler = new PacketManager("fr.lmac.packet", "Fr_Mod", "Fr_Mod");
                                        ``` J'avais du changé mon packet mais je ne vois pas où est le problème ._.

                                        ^^

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

                                          Déjà tu n’utilise plus “FFMTPacketHandler” mais “PacketManager”.

                                          Ensuite aujourd’hui dans ton mod tu as quoi comme package (car je ne te suis plus), ça :

                                          lmac.sonic.packet
                                          

                                          ou, ça :

                                          fr.lmac.packet
                                          
                                          1 réponse Dernière réponse Répondre Citer 0
                                          • mindany2M Hors-ligne
                                            mindany2
                                            dernière édition par

                                            J’ai un petit problème, j’utilise

                                            public static final PacketManager rcModPacketHandler = new PacketManager("fr.lmac.packet", "Fr_mod", "Fr_mod");
                                            ``` mais l'information ne change pas :s
                                            Savez vous d'où viens le problème ?
                                            ```java
                                            public class Fr_mod {
                                            
                                            @Instance("Fr_mod")
                                            public static Fr_mod instance;
                                            
                                            @SidedProxy(clientSide = "fr.lmac.proxy.ClientProxy", serverSide = "fr.lmac.proxy.CommonProxy")
                                            public static CommonProxy proxy;
                                            
                                            public static final PacketManager rcModPacketHandler = new PacketManager("fr.lmac.packet", "Fr_mod", "Fr_mod");
                                            
                                            @EventHandler
                                            public void initConfig(FMLPreInitializationEvent event)
                                            {
                                            }
                                            @EventHandler
                                            public void load(FMLInitializationEvent event)
                                            {
                                            FMLCommonHandler.instance().bus().register(new PlayerTracker());
                                            MinecraftForge.EVENT_BUS.register(new PlayerTracker());
                                            }
                                            
                                            @EventHandler
                                            public void afterLoad(FMLPostInitializationEvent event)
                                            {
                                            }
                                            }
                                            
                                            public class PacketFr extends FFMTPacket
                                            {
                                            
                                            public boolean DoubleJump;
                                            
                                            public PacketFr(){
                                            
                                            }
                                            
                                            public PacketFr(boolean DoubleJump){
                                            this.DoubleJump = DoubleJump;
                                            }
                                            
                                            @Override
                                            public void writeData(ByteBuf buffer) throws IOException {
                                            buffer.writeBoolean(DoubleJump);
                                            
                                            }
                                            
                                            @Override
                                            public void readData(ByteBuf buffer) {
                                            this.DoubleJump = buffer.readBoolean();
                                            
                                            }
                                            
                                            @Override
                                            public void handleClientSide(EntityPlayer player) {
                                            ExtendedEntityPropFr props = ExtendedEntityPropFr
                                            .get(player);
                                            props.DoubleJump = this.DoubleJump;
                                            }
                                            
                                            @Override
                                            public void handleServerSide(EntityPlayer player) {
                                            ExtendedEntityPropFr props = ExtendedEntityPropFr
                                            .get(player);
                                            props.DoubleJump = this.DoubleJump;
                                            }
                                            
                                            }
                                            
                                            
                                            public class ExtendedEntityPropFr implements IExtendedEntityProperties {
                                            
                                            public final static String EXT_PROP_NAME = "ExtPropFr";
                                            
                                            private final EntityPlayer player;
                                            
                                            public boolean DoubleJump;
                                            
                                            public ExtendedEntityPropFr(EntityPlayer player) {
                                            this.player = player;
                                            this.DoubleJump = false;
                                            
                                            }
                                            
                                            @Override
                                            public void saveNBTData(NBTTagCompound compound) {
                                            
                                            NBTTagCompound properties = new NBTTagCompound();
                                            
                                            properties.setBoolean("DoubleJump", this.DoubleJump);
                                            
                                            compound.setTag(EXT_PROP_NAME, properties);
                                            
                                            }
                                            
                                            @Override
                                            public void loadNBTData(NBTTagCompound compound) {
                                            NBTTagCompound properties = (NBTTagCompound) compound.getTag(EXT_PROP_NAME);
                                            this.DoubleJump = properties.getBoolean("DoubleJump");
                                            
                                            }
                                            
                                            @Override
                                            public void init(Entity entity, World world) {
                                            // TODO Auto-generated method stub
                                            
                                            }
                                            
                                            public static final void register(EntityPlayer player) {
                                            player.registerExtendedProperties(ExtendedEntityPropFr.EXT_PROP_NAME,
                                            new ExtendedEntityPropFr(player));
                                            }
                                            
                                            public static final ExtendedEntityPropFr get(EntityPlayer player) {
                                            return (ExtendedEntityPropFr) player.getExtendedProperties(EXT_PROP_NAME);
                                            }
                                            
                                            public final void sync() {
                                            PacketFr packetFr = new PacketFr(this.DoubleJump);
                                            Fr_mod.rcModPacketHandler.sendToServer(packetFr);
                                            
                                            if (!player.worldObj.isRemote) {
                                            EntityPlayerMP player1 = (EntityPlayerMP) player;
                                            //Ici, même chose que précédemment, sauf que le packet est envoyé au player.
                                            Fr_mod.rcModPacketHandler.sendTo(packetFr, player1);
                                            
                                            }
                                            }
                                            private static String getSaveKey(EntityPlayer player) {
                                            return player.getDisplayName() + ":" + EXT_PROP_NAME;
                                            }
                                            
                                            public static void saveProxyData(EntityPlayer player) {
                                            ExtendedEntityPropFr playerData = ExtendedEntityPropFr.get(player);
                                            NBTTagCompound savedData = new NBTTagCompound();
                                            
                                            playerData.saveNBTData(savedData);
                                            CommonProxy.storeEntityData(getSaveKey(player), savedData);
                                            }
                                            
                                            public static void loadProxyData(EntityPlayer player) {
                                            ExtendedEntityPropFr playerData = ExtendedEntityPropFr .get(player);
                                            NBTTagCompound savedData = CommonProxy.getEntityData(getSaveKey(player));
                                            
                                            if (savedData != null) {
                                            playerData.loadNBTData(savedData);
                                            }
                                            playerData.sync();
                                            }
                                            
                                            public boolean getDoubleJump() {
                                            return this.DoubleJump;
                                            }
                                            
                                            public void setDoubleJump(boolean newDoubleJump) {
                                            this.DoubleJump = newDoubleJump;
                                            this.sync();
                                            }
                                            
                                            }
                                            
                                            
                                            @SideOnly(Side.CLIENT)
                                            int timer;
                                            boolean jumpLast = false;
                                            @SideOnly(Side.CLIENT)
                                            @SubscribeEvent
                                            public void onTickPlayer(TickEvent.PlayerTickEvent event)
                                            {
                                            if(event.player.getCommandSenderName() == Minecraft.getMinecraft().thePlayer.getCommandSenderName())
                                            {
                                            EntityPlayerSP player = Minecraft.getMinecraft().thePlayer;
                                            
                                            ExtendedEntityPropFr prop = new ExtendedEntityPropFr(player);
                                            
                                            if(player.worldObj.getGameRules().getGameRuleBooleanValue("enableRing")){
                                            
                                            if(player.movementInput.jump)
                                            {
                                            if(!jumpLast)
                                            {
                                            jumpLast = true;
                                            }
                                            else if(timer > 2)
                                            {
                                            prop.setDoubleJump(true);
                                            jumpLast = false;
                                            
                                            }
                                            timer = 0;
                                            }
                                            else{
                                            prop.setDoubleJump(false);
                                            }
                                            
                                            if(jumpLast)
                                            {
                                            timer ++;
                                            if(timer > 20)
                                            {
                                            jumpLast = false;
                                            timer = 0;
                                            }
                                            }
                                            
                                            }
                                            }
                                            }
                                            

                                            Normalement c’est bon sauf si je me suis encore gourré

                                            ^^

                                            1 réponse Dernière réponse Répondre Citer 0
                                            • 1
                                            • 2
                                            • 3
                                            • 4
                                            • 5
                                            • 6
                                            • 7
                                            • 2 / 7
                                            • Premier message
                                              Dernier message
                                            Design by Woryk
                                            ContactMentions Légales

                                            MINECRAFT FORGE FRANCE © 2024

                                            Powered by NodeBB