1.12.2 [1.12.2] Touche personnalisé sous conditions crash



  • Bonjour !
    Je souhaite créer une touche personnalisé (ici , 'B'), j'aimerais que la touche envoie un message dans le chat sous la condition que le joueur est une armure particulière , ici, un sac à dos ( pour la suite ouvrir un container que je n'ai pas encore créer).
    j'ai donc fait ;

    	@SubscribeEvent
    	    public void onEvent(KeyInputEvent event)
    	    {
    	        if(keyBindBackpack.isPressed())
    	        {
    	        	if(player.inventory.armorItemInSlot(2) != null )
    	        	{
    	            keyTestTyped();
    	        }
    	       }
    	    }
    	 
    	    private void keyTestTyped()
    	    {
    	
    	    		Minecraft.getMinecraft().player.sendChatMessage("test");
    	    	
    	    }
    

    (Ceci est dans mon ClientProxy)

    Seul problème, le jeu se lance mais dès que j'appuie sur B le jeu crash avec cette erreur :

    https://pastebin.com/BJh71kyk

    J'avoue ne pas comprendre l'erreur, j'aimerais aussi savoir comment faire pour dire que je veux que ce soit l'item "backpack" dans l'armor ItemSlot et non pas juste une condition pour voir si il y a quelquechose d'équipé..

    Merci d'avoir pris le temps de lire !



  • @Scouloune a dit dans [1.12.2] Touche personnalisé sous conditions crash :

    if(keyBindBackpack.isPressed())

          {
    
          	if(player.inventory.armorItemInSlot(2) != null )
    
          	{
    
              keyTestTyped();
    
          }
    

    j'ai aussi essayé :
    if(keyBindBackpack.isPressed() && player.inventory.armorItemInSlot(2) != null)
    {
    keyTestTyped();
    }

    ça ne fonctionne pas



  • J'ai trouvé ! Je le donne ça pourrais être utile à des gens :

     if(keyPersonnalisé.isPressed() && Minecraft.getMinecraft().player.inventory.armorItemInSlot(2).getItem() == ModItems.VOTRE_ITEM)
    	        {      
    	        	keyPressed();
    	        }


  • tu peut donner le code entier stp



  • @pazzazzo

    (TOUT DANS TON CLIENTPROXY !)
    pour créer la touche :

    tout en haut tu déclares

    private static Keybinding nom_de_ta_touche;
    

    ensuite dans ton ClientProxy :

    MinecraftForge.EVENT_BUS.register(this);
    nom_de_ta_touche = new KeyBinding("nom.key",Keyboard.KEY_(tu choisis celle que tu souhaites),"key.categories.gameplay");
    ClientRegistry.registerKeyBinding(nom_de_ta_touche);
    

    ensuite tu vas créer une fonction pour vérifier que tu à appuyer sur ta touche :

    @SubscribeEvent
    public void onEvent(KeyInputEvent event)
    {
    if(nom_de_ta_touche.isPressed())
          {
                 keyTestTyped();
          }
    }
    

    ensuite, une fonction pour savoir quesque ta touche doit faire :

    private void keyTestTyped(); 
    {
       //ton action ici , par exemple tu veux envoyer un message dans le chat quand tu appuies sur ta touche :
    
    Minecraft.getMinecraft().player.sendChatMesssage("ma touche personnalisé fonctionne");
    }
    

    Voilà ! J'éspère avoir été clair ! 🙂
    Désolé pour les quelques fautes.. 😞



  • je vais tester merciiii d'avance 😊



  • Ha oui mais attends, le nom de la touche elle est configurable dans les paramètres?



  • sa me demande de créer la classe Keybinding



  • @pazzazzo Tu as discord ?
    Scouloune #9522


Log in to reply