1.12.2 Armures ou items qui permettent de fly en survit



  • Bonjour j'aimerais permettre le fly en survival avec un item puis a terme avec une armure complète, j'ai essayé plusieurs chose pour les armures mais en vain donc j'ai essayé pour un simple item mais sans succès... je me tourne donc vers vous, voici mon dernier essaie dans la class de mon item permettant de fly.

    public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player)
    {
         player.capabilities.allowFlying = true;
         return stack;
    }
    

    Merci d'avoir pris le temps de lire, en espérant que vous ayez une solution, bonne journée



  • Et donc en mettant cette variable a true ton joueur ne peut pas voler ?



  • Non il ne vole pas je comprend pas pourquoi



  • Écoute, je sais qu'en 1.15.2 cela fonctionne comme tu le fait dans ton exemple et cela fait quelque temps que je n'ai pas codé en 1.12.2, si tu veux essayer de te mettre au gout du jour, essaye de faire ton mod en 1.15.2, pour pouvoir après le porter dans les autres versions plus tard.



  • Je compte bien le mettre a jour vers les nouvelles versions mais mon mod commence à être conséquent et tous basculer en 1.15.2 juste pou une armure qui fly ça me fait un peu chier 😅



  • Je te comprend, mais bon après plus tu coderas en 1.12 et plus le basculement sera compliqué ensuite.



  • oui c'est vrai je pense que je vais bien galérer mais bon tant pis... Je vais quand même continuer à chercher car mon mod et quasiment terminé donc ça me chier d’abandonner la, si jamais quelqu'un a une idée je suis toujours preneur.



  • Et j'aimerais bien direct passer mon mod direct en 1.16 plutôt mais bon j'arrive pas a créer mon environnement de développement Eclipse donc si quelqu'un sais comment faire je veux bien aussi



  • J'ai réussi a activer le fly mais impossible de le désactiver en enlevant mon armure, voila mon code. Mon armure active le fly lorsque un seul morceaux d'armure est équipé alors que j'aimerais qu'il ne s'active qu'une fois toute l'armure équipé.

    package fr.arca.arcadia.items.armor;
    
    public class ArmorBase extends ItemArmor implements IHasModel 
    {
    
       private int ticksExisted;
    
       public ArmorBase(String name, ArmorMaterial materialIn, int renderIndexIn, EntityEquipmentSlot equipmentSlotIn) 
       {
       	super(materialIn, renderIndexIn, equipmentSlotIn);
       	setUnlocalizedName(name);
       	setRegistryName(name);
       	setCreativeTab(Arcadia.ArcadiaTab);
       	ItemsMod.ITEMS.add(this);
       }
    
       @Override
       public void onArmorTick(World world, EntityPlayer player, ItemStack itemStack) 
       {
       	super.onArmorTick(world, player, itemStack);
       	
       	if(this.ticksExisted % 60 == 0)
       	{
       		ItemStack helmet = player.inventory.armorItemInSlot( 3 );
       		ItemStack chestplate = player.inventory.armorItemInSlot( 2 );
       		ItemStack leggings = player.inventory.armorItemInSlot( 1 );
       		ItemStack boots = player.inventory.armorItemInSlot( 0 );
       		
       		if(boots != null && leggings != null && chestplate != null && helmet != null)
       		{
       			player.capabilities.allowFlying = true;
       		}
       	}
       }
       
       @Override
       public void registerModels() 
       {
       	Arcadia.proxy.registerItemRenderer(this, 0, "inventory");
       }
    }
    

  • Moddeurs confirmés Rédacteurs Administrateurs

    Il ne faut pas passer par armortick mais plutôt par player tick si tu veux pouvoir le désactiver quand l'armure est retiré. (faut faire une condition du genre, si l'utilisateur n'a pas l'armure et n'est pas en créatif et qu'il peut voler => interdire de voler)



  • J'ai essayé sauf que PlayerTick n'existe pas en 1.12 et je n'ai pas trouvé d'alternative, il y a PlayertTickEvent mais ça ne fonctionne pas, je n'arrive meme pas a voler...

    Pour le moment ce code est un code de test pour voir si j'arrive a désactiver le fly:

     public void PlayerTickEvent(World world, EntityPlayer player, ItemStack itemStack) 
        {
     
        		ItemStack helmet = player.inventory.armorItemInSlot( 3 );
        		ItemStack chestplate = player.inventory.armorItemInSlot( 2 );
        		ItemStack leggings = player.inventory.armorItemInSlot( 1 );
        		ItemStack boots = player.inventory.armorItemInSlot( 0 );
        		
        		if(boots != null && leggings != null && chestplate != null && helmet != null)
        		{
        			player.capabilities.allowFlying = true;
        		}
        		
        		else
        		{
        			player.capabilities.allowFlying = false;
        		}
        }
    

  • Moddeurs confirmés Rédacteurs Administrateurs

    Ce n'est pas comme cela qu'un événement s'utilise.

    https://www.minecraftforgefrance.fr/topic/636/utiliser-les-événements



  • Il n'y pas moyen de ne pas utiliser d'event ? Parce que je n'en ai jamais utilisé dans du code du coup je suis complètement perdu, j'ai essayé quelque truc mais rien ne fonctionne, j'ai lu ton tuto de 1.7 et 1.8 mais ça ne m'as pas avancé a grand chose désolé...


  • Moddeurs confirmés Rédacteurs Administrateurs

    Mais il y a quoi de compliqué ????

        @SubscribeEvent
       public void onPlayerTick(PlayerTickEvent event) 
        {
                    EntityPlayer player = event.getPlayer();
        		ItemStack helmet = player.inventory.armorItemInSlot( 3 );
        		ItemStack chestplate = player.inventory.armorItemInSlot( 2 );
        		ItemStack leggings = player.inventory.armorItemInSlot( 1 );
        		ItemStack boots = player.inventory.armorItemInSlot( 0 );
    
        		if(boots != null && leggings != null && chestplate != null && helmet != null)
        		{
        			player.capabilities.allowFlying = true;
        		}
    
        		else
        		{
        			player.capabilities.allowFlying = false;
        		}
        }
    


  • J'avais quasiment fait ça j'avais juste mal écrit la ligne de l'EntityPlayer mais je pensais m’être complètement planté, ducoup j'ai juste un probléme avec le event.getPlayer , le getPlayer me met une erreur... "The method getPlayer() is undefined for the type TickEvent.PlayerTickEvent"

    @SubscribeEvent
    	   public void onPlayerTick(PlayerTickEvent event) 
    	    {
    	                EntityPlayer player = event.getPlayer();
    	    		ItemStack helmet = player.inventory.armorItemInSlot( 3 );
    	    		ItemStack chestplate = player.inventory.armorItemInSlot( 2 );
    	    		ItemStack leggings = player.inventory.armorItemInSlot( 1 );
    	    		ItemStack boots = player.inventory.armorItemInSlot( 0 );
    	 
    	    		if(boots != null && leggings != null && chestplate != null && helmet != null)
    	    		{
    	    			player.capabilities.allowFlying = true;
    	    		}
    	 
    	    		else
    	    		{
    	    			player.capabilities.allowFlying = false;
    	    		}
    	    }
    

  • Moddeurs confirmés Rédacteurs Administrateurs

    C'est peut-être getEntityPlayer() alors ? Ou juste .player; ?



  • Je peux mettre event.player mais impossible de voler et pour getEntityPlayer impossible de le mettre ça fait pareil que le .getPlayer...


  • Moddeurs confirmés Rédacteurs Administrateurs

    Donc c'est event.player le bon.

    Maintenant reste à savoir si ton événement est bien appelé ou non. Si la fonction n'est jamais appelé c'est que tu ne l'as pas enregistré, retourne voir le tutoriel dans ce cas ...



  • C'est bon je l'ai enregistré avec event.player et j'arrive a voler en survie ! Petit problème je vole sans armure...
    Je continue à chercher mais si jamais t'as la solution je suis preneur 😅



  • Bon j'y arrive pas, je comprend pas...


Log in to reply