• Bonsoir,

    Je me lance en 1.8 donc je rencontre pas mal de soucis car le code n’est pas le même x) .

    Actuellement j’ai un soucis avec mon packet.

    Je vous explique:

    En gros dans mon packet j’ai un switch/case donc dans le switch je récupère le message de mon packet avec -> message.sicle (sicle est le string de mon packet) mais j’ai une érreur il me demande de changer ma compilation et mon JRE en 1.7 .

    Sûrement car en 1.8 il y a une alternance mais la quelle ? je sais pas du tout x) 
    je vous passe mon code (au cas ou car je sais que j’explique mal):

    
    package com.CSC.net.item.packet;
    
    import io.netty.buffer.ByteBuf;
    import net.minecraftforge.fml.common.network.ByteBufUtils;
    import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
    import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler;
    import net.minecraftforge.fml.common.network.simpleimpl.MessageContext;
    
    public class PacketPrison implements IMessage{
    
    private String sicle;
    
    public PacketPrison()
    {
    
    }
    
    public PacketPrison(String s)
    {
    this.sicle = s;
    }
    
    @Override
    public void fromBytes(ByteBuf buf) 
    {
    this.sicle = ByteBufUtils.readUTF8String(buf);
    }
    
    @Override
    public void toBytes(ByteBuf buf) 
    {
    ByteBufUtils.writeUTF8String(buf, sicle);
    }
    
    public static class Handler implements IMessageHandler <packetprison, imessage="">{
       public IMessage onMessage(PacketPrison message, MessageContext ctx) 
       {
        switch(message.sicle)//Erreur ici
                 {
                     case 1:
    
                         break;
                     case 2:
                         break;
                     default:
                         break;
                 }
    return null;
    
       }
    }
    
    }
    
    

    Merci :)</packetprison,>


  • Le problème ne vient pas du fait que tu soit en 1.8, mais du fait que ce n’est pas possible de faire un switch de String avant Java 7. Donc soit tu précises dans ton build.gradle que tu souhaites utiliser java 7 (ou 8), soit tu utilises des conditions simples


  • @‘SCAREX’:

    Le problème ne vient pas du fait que tu soit en 1.8, mais du fait que ce n’est pas possible de faire un switch de String avant Java 7. Donc soit tu précises dans ton build.gradle que tu souhaites utiliser java 7 (ou 8), soit tu utilises des conditions simples

    Ah ok,

    Le truc c’est que j’utilise le packet pour un GuiTextField dans mon guiscreen donc je peux pas changer de condition, sinon je fais autrement mais je vois pas comment faire.

    (Se que je cherche a faire c’est dans le GuiTextField quand je joueur marque dans le GuiTextField un chiffre entre 1 et 5 sa le met prison)

    Le temps de prison varie en fonction du chiffre 1 = 5 min , 2 = 10 min etc…

    edit:

    J’ai trouvé… je suis con

    if(text.getText().equals(“1”))
    {
    }

    Merci quand même x)


  • Le switch est impossible pour les chaînes de caractères, mais tu peux faire une suite de conditions :

    if (sicle.equals("1")) {
    // ton code
    } else if (sicle.equals("2")) {
    // ton code etc.
    }
    

    Par contre ce que je ne comprends pas c’est pourquoi tu envoies un String pour ensuite le comparer en tant que chiffre ? C’est beaucoup mieux de convertir d’abord ta chaîne de caractère en chiffre.


  • @‘SCAREX’:

    Le switch est impossible pour les chaînes de caractères, mais tu peux faire une suite de conditions :

    if (sicle.equals("1")) {
       // ton code
    } else if (sicle.equals("2")) {
       // ton code etc.
    }
    

    Par contre ce que je ne comprends pas c’est pourquoi tu envoies un String pour ensuite le comparer en tant que chiffre ? C’est beaucoup mieux de convertir d’abord ta chaîne de caractère en chiffre.

    Non mais c’est bon finalement x) désolé du dérangement.