Action Custom Dispenser
-
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.
-
par2ItemStack -> stack, plus joli.
//code spécial à effectuer
Des exemples peut être ? -
Copier-coller