• Register
    • Login
    • Search
    • Recent
    • Tags
    • Popular
    • Users
    • Groups

    Action Custom Dispenser

    Autres
    1.6.x
    2
    3
    1717
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • S
      Sayac12 last edited by robin4002

      Salut,
      Voici mon premier tutoriel. Il fonctionne en 1.6.x mais je n’ai pas testé en 1.7. Si vous n’avez pas compris le titre, vous allez apprendre à faire une action spéciale lorsque votre item ou bloc sera droppé par un dispenser. Cela peut être très utile notamment pour des TNT, des projectiles… J’ai mis beaucoup de temps à trouver mais j’y suis arriver.

      Dispenser Behavior

      Si vous ne savez pas ce que ça veut dire, moi non plus mais je sais juste que c’est la classe qui dit qu’est-ce qui se passe lorsque votre bloc est droppé par un dispenser.

      Code de base :

      package votrepackage_;
      
      import net.minecraft.block.BlockDispenser;
      import net.minecraft.dispenser.BehaviorDefaultDispenseItem;
      import net.minecraft.item.ItemStack;
      import net.minecraft.util.EnumFacing;
      import net.minecraft.world.World;
      
      final class DispenserBehaviorTuto extends BehaviorDefaultDispenseItem
      {
          protected ItemStack dispenseStack(ItemStack stack)
          {
              //code spécial à effectuer
      
              //Pas obligatoire mais je le conseille --stack.stackSize;
              return stack;
          }
      }
      

      Et voilà ! Il ne vous reste plus qu’à rajouter votre code spécial.
      Mais ce n’est pas fini !

      Classe Principale, Register

      Maintenant, dans votre classe principale, dans le INIT, rajoutez :

      BlockDispenser.dispenseBehaviorRegistry.putObject(VotreItem, new DispenserBehaviorTuto());
      

      Pensez à remplacer “VotreItem” et “DispenserBehaviorTuto” !
      Si ce n’est pas un item mais un bloc, écrivez à la place :

      BlockDispenser.dispenseBehaviorRegistry.putObject(Item.itemsList[VotreBloc.blockID], new DispenserBehaviorTuto());
      

      Exemple

      La plupart du temps(peut-être même tout le temps), l’action à effectuer est de faire spawner une entité. Code :

      package votrepackage_;
      
      import net.minecraft.block.BlockDispenser;
      import net.minecraft.dispenser.BehaviorDefaultDispenseItem;
      import net.minecraft.item.ItemStack;
      import net.minecraft.util.EnumFacing;
      import net.minecraft.world.World;
      
      final class DispenserBehaviorTuto extends BehaviorDefaultDispenseItem
      {
          protected ItemStack dispenseStack(IBlockSource blockSource, ItemStack stack)
          {
              //Obtenir le monde
              World world = blockSource.getWorld();
              //instancier l'entité
              EntityTuto entitytuto = new EntityTuto(/*paramètres de l'entité*/);
              //spawn de l'entité dans le monde
              world.spawnEntityInWorld(entitytuto);
      
              //Enlever 1 au stack
              –stack.stackSize;
              return stack;
          }
      }
      

      Voilà, c’est fini ! Si vous trouvez des erreurs, merci de m’en informer.

      Crée le mod TNT++ 1.6.4

      1 Reply Last reply Reply Quote 0
      • robin4002
        robin4002 Moddeurs confirmés Rédacteurs Administrateurs last edited by

        par2ItemStack -> stack, plus joli.
        //code spécial à effectuer
        Des exemples peut être ?

        1 Reply Last reply Reply Quote 0
        • S
          Sayac12 last edited by

          Copier-coller 😄

          Crée le mod TNT++ 1.6.4

          1 Reply Last reply Reply Quote 0
          • 1 / 1
          • First post
            Last post
          Design by Woryk
          Contact / Mentions Légales

          MINECRAFT FORGE FRANCE © 2018

          Powered by NodeBB