• Récent
  • Mots-clés
  • Populaire
  • Utilisateurs
  • Groupes
  • S'inscrire
  • Se connecter
  • S'inscrire
  • Se connecter
  • Recherche
  • Récent
  • Mots-clés
  • Populaire
  • Utilisateurs
  • Groupes

Résolu Problème de GUI

Anciennes versions
1.6.4
4
48
13.4k
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.
  • EclipseOnFire
    EclipseOnFire dernière édition par 9 janv. 2014, 18:40

    Salut !

    (H.S : Désolé de mon absence, j’ai eu beaucoup de boulot pour le serveur, et en plus j’ai perdu l’adresse du site ^^)
    Voilà, j’ai une question si vous permettez 😛

    Je me trouve face à une difficulté : j’ai crée un “Bloc sonore” qui permet en fait de jouer des sons. Ces sons sont préenregistrés et tout a été fait (enfin, je crois ^^) pour que cela fonctionne. Seulement voilà, je n’arrive pas à créer le GUI : je me suis perdu dans les tutos en essayant de comprendre les codes de Robin4002 sans comprendre les liens entre les classes (même après avoir lu l’introduction).
    Donc j’ai mon bloc sonore, j’ai crée mon GUI (ce n’est pas un GUI en fait, mais une fenêtre, vu la complexité des commandes ^^) et ma TileEntity complétée avec tous les paramètres (volume, son, répétition etc…). Seulement je ne sais pas comment et quand exécuter mon GUI, dans quelle classe ni quelle méthode utiliser. Si quelqu’un pouvait m’aider svp ?

    Merci d’avance ! 🙂

    Screenshot ici.

    Travaille sur un super serveur, Wirestone.

    1 réponse Dernière réponse Répondre Citer 0
    • Superloup10
      Superloup10 Modérateurs dernière édition par 9 janv. 2014, 18:59

      Pourrais-tu nous mettre tes class, stp?

      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
      • EclipseOnFire
        EclipseOnFire dernière édition par 9 janv. 2014, 19:12

        Bien sûr :

        SoundBlock.java

        public class SoundBlock extends BlockContainer{
        //Forcément vide, c'est là où je bloque ^^
        public SoundBlock(int par1, Material par2Material) {
        super(par1, par2Material);
        }
        @Override
        public TileEntity createNewTileEntity(World world) {
        return new TileEntitySoundBlock();
        }
        @Override
        public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int par6, float par7, float par8, float par9){
        }
        @Override
        public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase living, ItemStack stack){
        }
        }

        SoundBlockDialog.java (Le GUI)

        public class SoundBlockDialog extends JDialog {
        private JComboBox soundChooser;
        private JCheckBox loopCheckBox;
        private JSpinner delayChooser;
        private JSlider volumeChooser;
        private JLabel volumeLabel;
        private TileEntitySoundBlock tileEntity;
        /**
        * Create the dialog.
        */
        public SoundBlockDialog(TileEntitySoundBlock tile){
        tileEntity = tile;
        setTitle("Edition des paramètres - Bloc sonore");
        setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);
        setModal(true);
        setResizable(false);
        setBounds(100, 100, 316, 331);
        getContentPane().setLayout(null);
        JLabel label1 = new JLabel("Son \u00E0 jouer :");
        label1.setBounds(10, 43, 290, 29);
        getContentPane().add(label1);
        soundChooser = new JComboBox();
        for(String i : Registry.soundList){
        soundChooser.addItem(i.replace("wsmod:",""));
        }
        soundChooser.setBounds(10, 83, 217, 35);
        getContentPane().add(soundChooser);
        loopCheckBox = new JCheckBox("Jouer le son en boucle");
        loopCheckBox.setBounds(10, 7, 290, 29);
        getContentPane().add(loopCheckBox);
        JButton closeButton = new JButton("Fermer");
        closeButton.addActionListener(new CloseButtonListener());
        closeButton.setBounds(98, 249, 114, 35);
        getContentPane().add(closeButton);
        delayChooser = new JSpinner();
        delayChooser.setModel(new SpinnerNumberModel(0, 0, 200, 5));
        delayChooser.setBounds(237, 129, 63, 29);
        getContentPane().add(delayChooser);
        JLabel label2 = new JLabel("D\u00E9lai entre chaque r\u00E9p\u00E9tition (max 200) :");
        label2.setBounds(10, 129, 290, 29);
        getContentPane().add(label2);
        volumeChooser = new JSlider();
        volumeChooser.addChangeListener(new VolumeChooserListener());
        volumeChooser.setValue(0);
        volumeChooser.setPaintTicks(true);
        volumeChooser.setMajorTickSpacing(10);
        volumeChooser.setMinorTickSpacing(5);
        volumeChooser.setBounds(10, 209, 290, 29);
        getContentPane().add(volumeChooser);
        volumeLabel = new JLabel("0%");
        volumeLabel.setHorizontalAlignment(SwingConstants.CENTER);
        volumeLabel.setBounds(129, 169, 53, 29);
        getContentPane().add(volumeLabel);
        JLabel label3 = new JLabel("Volume :");
        label3.setBounds(10, 169, 290, 29);
        getContentPane().add(label3);
        loopCheckBox.setSelected(tileEntity.getIsLoop());
        soundChooser.setSelectedItem(tileEntity.getSound());
        delayChooser.setValue(tileEntity.getDelay());
        volumeChooser.setValue((int)(tileEntity.getVolume()*100));
        JButton playButton = new JButton("Lire");
        playButton.addActionListener(new PlayButtonListener());
        playButton.setBounds(237, 83, 63, 35);
        getContentPane().add(playButton);
        setVisible(true);
        }
        class CloseButtonListener implements ActionListener{
        @Override
        public void actionPerformed(ActionEvent e) {
        tileEntity.setIsLoop(loopCheckBox.isSelected());
        tileEntity.setSound((String)soundChooser.getSelectedItem());
        tileEntity.setDelay((int)delayChooser.getValue());
        tileEntity.setVolume((float)volumeChooser.getValue()/100);
        }
        }
        class VolumeChooserListener implements ChangeListener{
        @Override
        public void stateChanged(ChangeEvent e){
        volumeLabel.setText(volumeChooser.getValue() + "%");
        }
        }
        class PlayButtonListener implements ActionListener{
        @Override
        public void actionPerformed(ActionEvent e){
        //En cours
        }
        }
        }

        TileEntitySoundBlock.java

        public class TileEntitySoundBlock extends TileEntity{
        private boolean loop = false;
        private String sound = "alarm.ogg";
        private float volume = 1.0F;
        private int delay = 0;
        @Override
        public void readFromNBT(NBTTagCompound nbtTag){
        super.readFromNBT(nbtTag);
        nbtTag.setBoolean("Loop",this.loop);
        nbtTag.setString("Sound",this.sound);
        nbtTag.setFloat("Volume",this.volume);
        nbtTag.setInteger("Delay",this.delay);
        }
        @Override
        public void writeToNBT(NBTTagCompound nbtTag){
        super.writeToNBT(nbtTag);
        this.loop = nbtTag.getBoolean("Loop");
        this.sound = nbtTag.getString("Sound");
        this.volume = nbtTag.getFloat("Volume");
        this.delay = nbtTag.getInteger("Delay");
        }
        public void setVolume(float volume){
        this.volume = volume;
        }
        public float getVolume(){
        return this.volume;
        }
        public void setDelay(int delay){
        this.delay = delay;
        }
        public int getDelay(){
        return this.delay;
        }
        public void setSound(String sound){
        this.sound = sound;
        }
        public String getSound(){
        return this.sound;
        }
        public String getSoundToPlay(){
        return "wsmod:" + this.sound;
        }
        public void setIsLoop(boolean loop){
        this.loop = loop;
        }
        public boolean getIsLoop(){
        return this.loop;
        }
        }

        Travaille sur un super serveur, Wirestone.

        1 réponse Dernière réponse Répondre Citer 0
        • Superloup10
          Superloup10 Modérateurs dernière édition par 9 janv. 2014, 20:33

          @Override
          public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int par6, float par7, float par8, float par9)

          Cette méthode permet d’activée le gui du bloc, ensuite, il faut que tu passes par un guiHandler, pour que ton gui puisse être associer à ton container grâce à ton tileEntity.
          Exemple:
          GuiHandler

          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
          • EclipseOnFire
            EclipseOnFire dernière édition par 9 janv. 2014, 20:45

            D’accord ! J’essayerai ça demain. En attendant, je te remercie de ton aide !
            Je te tiens au courant ! 🙂

            Travaille sur un super serveur, Wirestone.

            1 réponse Dernière réponse Répondre Citer 0
            • Superloup10
              Superloup10 Modérateurs dernière édition par 9 janv. 2014, 20:52

              Ok, si besoin, je t’aiderais à la coder.

              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
              • robin4002
                robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par 9 janv. 2014, 22:17

                public class SoundBlockDialog extends JDialog {

                Ça ne fonctionnera jamais. Tu ne peux pas utiliser les interfaces de java pour un gui dans minecraft.

                1 réponse Dernière réponse Répondre Citer 0
                • EclipseOnFire
                  EclipseOnFire dernière édition par 10 janv. 2014, 15:55

                  Ça ne fonctionnera jamais. Tu ne peux pas utiliser les interfaces de java pour un gui dans minecraft.

                  Si les gars de Forge sont parvenus à coder un système permettant d’automatiser la création de GUI c’est que c’est possible.

                  Franchement, comment pourrais-je faire autrement ? Vous avez bien vu la complexité du GUI, ça m’étonnerai que j’arriverai à reproduire ça dans Minecraft. De base, je sais coder en Java, pas en Minecraft ^^.
                  J’ai tenté de comprendre les codes de Minecraft, j’ai compris un certain nombre de choses mais les GUI, ça me dépasse de loin ^^.

                  Ce que je veux faire c’est simplement un GUI vide (pour utiliser les méthodes de Forge et avoir la version Serveur et Client) et la fenêtre que j’ai programmé remplacera le “contenu” du GUI (boutons, fenêtre etc.).
                  Je demandais donc si je pouvais obtenir de l’aide sur les GUI car je n’ai pas compris la fonction de chaque élément du GUI, et comment ils sont liés entre eux. En ce qui concerne l’intégration du GUI et de ma fenêtre je m’en charge, ne vous inquiétez pas.
                  Voici ce que j’aimerais savoir :

                  • Comment le bloc lance-t-il notre GUI ?
                  • Quelle est l’utilité d’un GUIHandler ?
                  • Comment créer un bloc ayant un GUI sans qu’il n’ait d’inventaire ? (Par exemple, dans RailCraft lors du clic sur un rail, ou BuildCraft lorsqu’on veut éditer un pipe)

                  Merci d’avance 🙂

                  Travaille sur un super serveur, Wirestone.

                  1 réponse Dernière réponse Répondre Citer 0
                  • Superloup10
                    Superloup10 Modérateurs dernière édition par 10 janv. 2014, 18:29

                    1)C’est le joueur et non le bloc qui lance le gui en faisant un clic droit sur le bloc.
                    2)Le guiHandler fais le pont entre le tileEntity, et le gui du bloc.
                    3)Un livre n’a pas d’inventaire mais il a un gui.
                    Pour BuildCraft, regarde ici

                    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
                    • EclipseOnFire
                      EclipseOnFire dernière édition par 10 janv. 2014, 19:27

                      @‘Superloup10’:

                      1)C’est le joueur et non le bloc qui lance le gui en faisant un clic droit sur le bloc.
                      2)Le guiHandler fais le pont entre le tileEntity, et le gui du bloc.
                      3)Un livre n’a pas d’inventaire mais il a un gui.
                      Pour BuildCraft, regarde ici

                      Merci ! Je vais voir le livre alors ! Le seul inconvénient c’est qu’il n’utilise pas Forge, donc c’est différent xD. Je te tiens au courant, si j’y arrive j’arrête de vous embêter. 😛

                      Travaille sur un super serveur, Wirestone.

                      1 réponse Dernière réponse Répondre Citer 0
                      • Superloup10
                        Superloup10 Modérateurs dernière édition par 10 janv. 2014, 19:33

                        Tiens, cadeau: ContainerPedia est l’interface du livre
                        GuiHandler
                        ContainerPedia

                        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
                        • robin4002
                          robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par 10 janv. 2014, 20:19

                          @‘EclipseOnFire’:

                          Ça ne fonctionnera jamais. Tu ne peux pas utiliser les interfaces de java pour un gui dans minecraft.

                          Si les gars de Forge sont parvenus à coder un système permettant d’automatiser la création de GUI c’est que c’est possible.

                          Non, car la méthode qui ouvre une gui a besoin d’un objet extends Gui, or ta gui est extends JDialog.

                          @‘EclipseOnFire’:

                          Franchement, comment pourrais-je faire autrement ? Vous avez bien vu la complexité du GUI, ça m’étonnerai que j’arriverai à reproduire ça dans Minecraft. De base, je sais coder en Java, pas en Minecraft ^^.
                          J’ai tenté de comprendre les codes de Minecraft, j’ai compris un certain nombre de choses mais les GUI, ça me dépasse de loin ^^.

                          Pourtant ça c’est possible, il suffit de voir ce que Kévin et moi avont fait sur Nanotech mod (je pense principalement au projecteur de lumière et de texte), les mods est open source : https://github.com/FFMT/nanotech_mod
                          Regarde aussi FFMT libs, il y a quelques classes que Nanotech mod utilise pour les sliders :
                          https://github.com/FFMT/FFMT-libs

                          @‘EclipseOnFire’:

                          Ce que je veux faire c’est simplement un GUI vide (pour utiliser les méthodes de Forge et avoir la version Serveur et Client) et la fenêtre que j’ai programmé remplacera le “contenu” du GUI (boutons, fenêtre etc.).
                          Je demandais donc si je pouvais obtenir de l’aide sur les GUI car je n’ai pas compris la fonction de chaque élément du GUI, et comment ils sont liés entre eux. En ce qui concerne l’intégration du GUI et de ma fenêtre je m’en charge, ne vous inquiétez pas.
                          Voici ce que j’aimerais savoir :

                          • Comment le bloc lance-t-il notre GUI ?
                          • Quelle est l’utilité d’un GUIHandler ?
                          • Comment créer un bloc ayant un GUI sans qu’il n’ait d’inventaire ? (Par exemple, dans RailCraft lors du clic sur un rail, ou BuildCraft lorsqu’on veut éditer un pipe)

                          Merci d’avance 🙂

                          Superloup a donné des bonnes explications, je tiens juste à ajouter que ce n’est pas parcequ’il n’y a pas de slot d’inventaire qu’il n’y a pas de container. Les tuyaux de buildcraft ont bien un container, preuve ici :
                          https://github.com/BuildCraft/BuildCraft/blob/nightly/common/buildcraft/transport/gui/

                          1 réponse Dernière réponse Répondre Citer 0
                          • EclipseOnFire
                            EclipseOnFire dernière édition par 11 janv. 2014, 22:46

                            Bon voilà, j’ai tout recodé et mon système de fenêtre fonctionne. Il reste seulement deux problèmes :

                            • Ma fenêtre s’ouvre deux fois de suite (Je sais pas s’il faut check isRemote ou pas en fait)
                            • Ma TileEntity ne se sauvegarde pas (lorsque je quitte le monde et que je le charge, ma TileEntity perd ses paramètres…)

                            Si le problème vient de ma fenêtre, je recoderai en utilisant la méthode Minecraft mais comme je le gère pas je préfère éviter en fait.
                            Voici mes classes :
                            TileEntity.java

                            public class TileEntitySoundBlock extends TileEntity{
                            private boolean loop = false;
                            private String sound = "alarm.ogg";
                            private float volume = 1.0F;
                            private int delay = 0;
                            @Override
                            public void readFromNBT(NBTTagCompound nbtTag){
                            super.readFromNBT(nbtTag);
                            nbtTag.setBoolean("Loop",this.loop);
                            nbtTag.setString("Sound",this.sound);
                            nbtTag.setFloat("Volume",this.volume);
                            nbtTag.setInteger("Delay",this.delay);
                            }
                            @Override
                            public void writeToNBT(NBTTagCompound nbtTag){
                            super.writeToNBT(nbtTag);
                            this.loop = nbtTag.getBoolean("Loop");
                            this.sound = nbtTag.getString("Sound");
                            this.volume = nbtTag.getFloat("Volume");
                            this.delay = nbtTag.getInteger("Delay");
                            }
                            public void setVolume(float volume){
                            this.volume = volume;
                            }
                            public float getVolume(){
                            return this.volume;
                            }
                            public void setDelay(int delay){
                            this.delay = delay;
                            }
                            public int getDelay(){
                            return this.delay;
                            }
                            public void setSound(String sound){
                            System.out.println("setSound = " + sound);
                            this.sound = sound;
                            }
                            public String getSound(){
                            System.out.println("getSound = " + this.sound);
                            return this.sound;
                            }
                            public String getSoundToPlay(){
                            return "wsmod:" + this.sound;
                            }
                            public void setIsLoop(boolean loop){
                            this.loop = loop;
                            }
                            public boolean getIsLoop(){
                            return this.loop;
                            }
                            }

                            GuiHandlerSoundBlock.java

                            public class GuiHandlerSoundBlock implements IGuiHandler{
                            @Override
                            public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z){
                            TileEntity te = world.getBlockTileEntity(x, y, z);
                            if(te instanceof TileEntitySoundBlock){
                            return new ContainerSoundBlock(player.inventory, (TileEntitySoundBlock)te);
                            }
                            return null;
                            }
                            @Override
                            public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {
                            TileEntity te = world.getBlockTileEntity(x, y, z);
                            if(te instanceof TileEntitySoundBlock){
                            return new GuiSoundBlock(player.inventory, (TileEntitySoundBlock)te);
                            }
                            return null;
                            }
                            }

                            GuiSoundBlock.java

                            public class GuiSoundBlock extends GuiContainer{
                            private TileEntitySoundBlock soundBlock;
                            public GuiSoundBlock(InventoryPlayer inventory, TileEntitySoundBlock tileEntity){
                            super(new ContainerSoundBlock(inventory, tileEntity));
                            this.soundBlock = tileEntity;
                            this.ySize = 230;
                            }
                            @SideOnly(Side.CLIENT)
                            @Override
                            protected void drawGuiContainerForegroundLayer(int par1, int par2){
                            new SoundBlockDialog(soundBlock);
                            }
                            @Override
                            protected void drawGuiContainerBackgroundLayer(float f, int i, int j){}
                            }

                            Merci d’avance ! (Désolé d’être aussi têtu mais je gère vraiment pas les GUI Minecraft donc je ne l’utiliserai qu’en dernier recours)

                            Travaille sur un super serveur, Wirestone.

                            1 réponse Dernière réponse Répondre Citer 0
                            • robin4002
                              robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par 11 janv. 2014, 23:08

                              Pour les variables, il faut les synchroniser à l’aide de paquet.
                              Une fois de plus, regarde nanotech mod, le smoker, le jumper ou le projecteur.

                              Il y a également ça pour les paquets :
                              http://www.minecraftforgefrance.fr/showthread.php?tid=391&pid=4167#pid4167

                              1 réponse Dernière réponse Répondre Citer 0
                              • EclipseOnFire
                                EclipseOnFire dernière édition par 11 janv. 2014, 23:22

                                En lisant ton Smoker.java, j’ai vu que tu as laissé le “player.isSneaking” alors que Forge gère cet élément, c’est écrit dans ton tuto 😛

                                Travaille sur un super serveur, Wirestone.

                                1 réponse Dernière réponse Répondre Citer 0
                                • robin4002
                                  robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par 11 janv. 2014, 23:56

                                  Oui, il y a encore beaucoup de résidu de vieux code qui date du début de nanotech mod, je vais profiter de la 1.7 pour faire un gros nettoyage.

                                  1 réponse Dernière réponse Répondre Citer 0
                                  • EclipseOnFire
                                    EclipseOnFire dernière édition par 12 janv. 2014, 09:54

                                    @‘robin4002’:

                                    Oui, il y a encore beaucoup de résidu de vieux code qui date du début de nanotech mod, je vais profiter de la 1.7 pour faire un gros nettoyage.

                                    Perso quand ça m’embête d’avoir de vieux trucs et des erreurs dans mon code, je m’énerve et je recode tout xD (c’est pas productif mais c’est efficace 👼).

                                    Bref, j’ai réussi à faire un packet mais je sais vraiment pas quoi mettre dedans ^^.
                                    Mon PacketHandler.java

                                    public class PacketHandler implements IPacketHandler{
                                    @Override
                                    public void onPacketData(INetworkManager manager, Packet250CustomPayload packet, Player player){
                                    EntityPlayer playerSender = (EntityPlayer)player;
                                    if(packet.channel.equals("wsmod|soundBlock")){
                                    handleSoundBlockPacket(packet, playerSender);
                                    }
                                    }
                                    private void handleSoundBlockPacket(Packet250CustomPayload packet, EntityPlayer player){
                                    try{
                                    DataInputStream data = new DataInputStream(new ByteArrayInputStream(packet.data));
                                    //Je met quoi ici ? :P
                                    }catch(Exception e){
                                    e.printStackTrace();
                                    }
                                    }
                                    }

                                    TileEntitySoundBlock.java (je met que la partie modifiée hein)

                                    public Packet getDescriptionPacket(){
                                    NBTTagCompound nbttagcompound = new NBTTagCompound();
                                    this.writeToNBT(nbttagcompound);
                                    return new Packet132TileEntityData(this.xCoord, this.yCoord, this.zCoord, 4, nbttagcompound);
                                    }
                                    @Override
                                    public void onDataPacket(INetworkManager net, Packet132TileEntityData pkt){
                                    this.readFromNBT(pkt.data);
                                    }

                                    Pour la partie “actionPerformed” je sais pas quoi mettre non plus.

                                    Merci d’avance !

                                    Travaille sur un super serveur, Wirestone.

                                    1 réponse Dernière réponse Répondre Citer 0
                                    • Gugu
                                      Gugu dernière édition par 12 janv. 2014, 10:31

                                      actionPerformed = un switch avec l’id du bouton en param, et dans le case id: tu mets ton code a effectuer

                                      "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
                                      • EclipseOnFire
                                        EclipseOnFire dernière édition par 12 janv. 2014, 11:16

                                        @‘Gugu42’:

                                        actionPerformed = un switch avec l’id du bouton en param, et dans le case id: tu mets ton code a effectuer

                                        Non, ça d’accord ! Je veux dire le code pour les packets.

                                        Travaille sur un super serveur, Wirestone.

                                        1 réponse Dernière réponse Répondre Citer 0
                                        • robin4002
                                          robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par 12 janv. 2014, 13:26

                                          Dans ton gui, tu remplace :

                                          tileEntity.setIsLoop(loopCheckBox.isSelected());
                                          tileEntity.setSound((String)soundChooser.getSelectedItem());
                                          tileEntity.setDelay((int)delayChooser.getValue());
                                          tileEntity.setVolume((float)volumeChooser.getValue()/100);

                                          Par :

                                          ByteArrayOutputStream bytearrayoutputstream = new ByteArrayOutputStream();
                                          DataOutputStream dataoutputstream = new DataOutputStream(bytearrayoutputstream);
                                          try
                                          {
                                          dataoutputstream.writeBoolean(loopCheckBox.isSelected());
                                          dataoutputstream.writeString((String)soundChooser.getSelectedItem());
                                          dataoutputstream.writeInt((int)delayChooser.getValue());
                                          dataoutputstream.writeFloat((float)volumeChooser.getValue()/100));
                                          this.mc.getNetHandler().addToSendQueue(new Packet250CustomPayload("wsmod|soundBlock", bytearrayoutputstream.toByteArray()));
                                          }
                                          catch(Exception exception)
                                          {
                                          exception.printStackTrace();
                                          }

                                          Et dans ton //Je mets quoi la
                                          tu mets :

                                          boolean isLoop = data.readBoolean();
                                          String sound = data.readString();
                                          int delay = data.readInt();
                                          float volume = data.readFloat();
                                          ContainerSoundBlock container = (ContainerSoundBlock)player.openContainer;
                                          TileEntitySoundBlock tileSoundBlock = container.getSoundBlockTile();
                                          tileSoundBlock.setIsLoop(isLoop);
                                          tileSoundBlock.setSound(sound);
                                          tileSoundBlock.setDelay(delay);
                                          tileSoundBlock.setVolume(volume);
                                          player.worldObj.markBlockForUpdate(tileSoundBlock.xCoord, tileSoundBlock.yCoord, tileSoundBlock.zCoord);

                                          Et normalement devrait être bon. Si ça fonctionne pas, c’est qu’il n’aime pas la gui java (d’ailleurs, elle s’affiche comment en jeu ? j’aimerai bien voir ça). Ou alors que le nom du chanel est trop long, ou que tu ne l’a pas enregistré dans la classe principale. (Dans le @NetworkMod il faut mettre la classe du packet handler et les chanel utilisés)

                                          1 réponse Dernière réponse Répondre Citer 0
                                          • 1
                                          • 2
                                          • 3
                                          • 1 / 3
                                          1 sur 48
                                          • Premier message
                                            1/48
                                            Dernier message
                                          Design by Woryk
                                          Contact / Mentions Légales

                                          MINECRAFT FORGE FRANCE © 2018

                                          Powered by NodeBB