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.
    • 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
                  • BlackDrag00nB Hors-ligne
                    BlackDrag00n
                    dernière édition par

                    Dans ta classe "ExtendedEntityPropFr " tu indique un packet et des imports suivant :

                    package lmac.sonic;
                    
                    import lmac.sonic.packet.PacketSonic;
                    import lmac.sonic.proxy.CommonProxy;
                    

                    En théorie sa devrait être :

                    package fr.lmac;
                    
                    import fr.lmac.packet.PacketSonic;
                    import fr.lmac.proxy.CommonProxy;
                    

                    Si tu essaye de cacher ton projet laisse tomber, je sais que tu prépare un mod “Sonic” avec le système de double saut ^^, donc sa serai bien que l’on passe à ton problème 😉 car on tourne en boucle a chaque copie que tu fait et que tu remplace des valeurs, il y a des erreurs différentes :p___Bon j’ai vu que tu as crée ton mod dans la section en développement, maintenant ton problème est reglé ou pas ?

                    Si non peut tu vérifier ces points suivant :

                    @Mod(modid = "Sonic_Mod", […]
                    
                    @Instance("Sonic_Mod")
                    
                    public static final PacketManagerrcModPacketHandler = new PacketManager("lmac.sonic.packet", "Sonic_Mod", "Sonic_Mod");
                    

                    Et que le “PacketSonic.java” se trouve bien dans ton package “lmac.sonic.packet” ?

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

                      (24h avant un double post ^^')
                      Les packages changent rien au problème de tout façon prendre ceux que j’ai mis dans les balises codes ou un autre
                      Je vais enlevé tout mes post qui ne concerne pas ce problème (où on tournait autour du pot) afin de laisser ce topic propre

                      Sinon tu as une idée du problème ^^ ?

                      ^^

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

                        bah sa change rien au fait qu’on a besoin de voir tes scripts pour voir l’erreur qu’y a pu s’y mettre pour t’aider a la résoudre, car si tu as bien suivi le tuto sa devrait marche (j’ai récemment fait le tuto et j’ai pas eu de problème).


                        Dans ta méthode :

                        public void onTickPlayer(TickEvent.PlayerTickEvent event)
                        

                        Essai de Modifier pas ça :

                        if(!jumpLast)
                        {
                        jumpLast = true;
                        System.out.println("Jump : TRUE");
                        System.out.println("Jump Prop : "+ExtendedEntityPropFr.get(mc.thePlayer).DoubleJump);
                        }
                        else if(timer > 2)
                        {
                        prop.setDoubleJump(true);
                        jumpLast = false;
                        System.out.println("Jump : FALSE");
                        System.out.println("Jump Prop : "+ExtendedEntityPropFr.get(mc.thePlayer).DoubleJump);
                        
                        }
                        

                        Cela va permettre d’afficher dans la console si la valeur “jumpLast” est égale à “true” ou “false” et donc de vérifier qu’il voit bien le double saut, l’autre ligne va permettre d’aller récupérer la valeur dans le “ExtendedEntityProp” et de savoir si elle a bien été enregistrer ou non.

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

                          Avant d’utiliser cette méthode pour l’enregistrement des données ça marchait 😛
                          Donc effectivement ça ne marche pas, il y a bien false lors du double jump

                          Jump : FALSE
                          Jump Prop : false
                          Jump : TRUE
                          Jump Prop : false

                          PS. I know 😛

                          ^^

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

                            donc apparemment tu aurais un problème avec le :

                            prop.setDoubleJump(true);
                            

                            Tu peux me donner la méthode de “setDoubleJump” dans “ExtendedEntityPropFr.java”

                            Et juste pour information personnel, tu as placé ou la méthode “onPlayerTick”

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

                              Tiens

                              public void setDoubleJump(boolean newDoubleJump) {
                              this.DoubleJump = newDoubleJump;
                              this.sync();
                              }
                              

                              Dans une classe que j’ai enregistrer avec

                              FMLCommonHandler.instance().bus().register(new PlayerTracker());
                              MinecraftForge.EVENT_BUS.register(new PlayerTracker());
                              
                              ``` dans ma classe principale
                              
                              PS.Je sais que j'ai un problème avec mon set ou ma synchro sinon je serais pas là :p
                              PS2.Je t'ai déjà donné la classe entière (donc avec le set) dans mes anciens message :D

                              ^^

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

                                cela ma l’air correct et ta méthode “sync”, peut tu l’a donner ?

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

                                  @‘mindany2’:

                                  
                                  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();
                                  }
                                  
                                  }
                                  
                                  

                                  Voigna ^^

                                  ^^

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

                                    Je ne vois rien d’étrange tout a l’air correct dans le codage.

                                    Après je pense qu’il faut attendre des codeurs un peu plus expérimenter dans le codage minecraft, car moi actuellement je suis bloquer dans le “onPlayerTick” il veut pas me le prendre en compte …

                                    donc je n’en suis pas a ton niveau ou tu cherche à enregistrer les valeurs mais ton problème viens d’ici, je pense au sync() principalement, du au test que l’on a fait avec les string out mais c’est peut être pas ta faute c’est peut être un problème dans le tuto.

                                    Je n’est jamais utiliser cette méthode encore… je découvre 😛

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

                                      Ok j’attendrais que quelqu’un d’autre passe 😛
                                      Niveau onPlayerTick t’a bien mis
                                      " @SideOnly(Side.CLIENT)
                                      @SubscribeEvent"

                                      ^^

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

                                        ouep je suis en train de crée une réponse sur mon poste et je te donne le lien sa sera mieux pour éviter de mélanger les problèmes 😉


                                        Voilà si tu veux jeter un œil au codage où tenter de comprendre mon problème je te donne “le lien” ou j’ai poster mon problème 🙂

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

                                          Bonjour, j’ai suivi le tutoriel a la lettre, et pourtant j’ai une erreur dans la classe du common proxy

                                          
                                          public class CommonProxy
                                          {
                                          
                                          private static final Map <string, nbttagcompound="">extendedEntityData = new HashMap<string, nbttagcompound="">();
                                          
                                          public void registerRender ()
                                          {
                                          
                                          System.out.println("Méthode du serveur");
                                          
                                          }
                                          
                                          public static void storeEntityData(String saveKey, NBTTagCompound savedData) {
                                          
                                          extendedEntityData.put(name, compound);
                                          }
                                          
                                          public static NBTTagCompound getEntityData(String saveKey) {
                                          return extendedEntityData.remove(name);
                                          }
                                          
                                          }
                                          
                                          

                                          Chez moi j’ai une erreur sur “name” et “compound”. Si je les déclare dans la classe du CommonProxy, le jeu plante quand je fais clic droit avec l’item.
                                          Quelqu’un aurait-il une idée ?</string,></string,>

                                          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

                                            public static void storeEntityData(String name, NBTTagCompound compound)
                                            {
                                            extendedEntityData.put(name, compound);
                                            }
                                            
                                            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