Créer Un Multi Tool
-
Ce tutoriel est également disponible en vidéo.
Sommaire
Introduction
Bonjour à tous !
Ce tutoriel va vous montrer comment créer un multi-tool
En gros un outil qui fais à la fois pioche, épée et hachePré-requis
Code
Création de l’outil:
Tout d’abord, créez une classe qui servira pour votre outil.
public class MultiTool { }
Vous ferez hériter votre classe de ItemTool et mettrez le constructeur
public class MultiTool extends ItemTool { public MultiTool(ToolMaterial material, Set<Block> effectives){ super(material, effectives); } }
Le premier paramètre est un ToolMaterial qui servira comme pour un outil, puis vous aurez un Set a créer qui dira à Minecraft quels blocks l’outil peut casser.
private static Set <block> effectives = Sets.newHashSet(blocs que vous souhaitez);
Propriétés de l’outil
Par exemple dans mon cas je veux que l’outil puisse casser à peu près tout les blocks.Nous allons déjà créer une fonction pour dire à Minecraft que l’outil est une pioche, une hache et une pelle.
@Override public Set<String> getToolClasses(ItemStack stack) { return ImmutableSet.of("pickaxe", "spade", "axe");}]
Nous allons ensuite définir les matériaux de bloc qui pourront être cassés.
@Override public boolean canHarvestBlock(IBlockState state) { return (state.getMaterial() == Material.WOOD || state.getMaterial() == Material.IRON || state.getMaterial() == Material.ROCK || state.getMaterial() == Material.ANVIL) ? true : false; }
Dans ce cas, tous les blocs avec le matériau WOOD, IRON, ROCK et ANVIL seront cassables.
(Cette méthode sert si vous voulez vraiment “tous les blocks” de ces types, si c’est juste un outil pour certains blocs autant utiliser le Set<block>)
Pour finir, vous devrez définir la force de “cassage” des blocs.
@Override public float getStrVsBlock(ItemStack stack, IBlockState state) { if(this.canHarvestBlock(state)) { return this.efficiencyOnProperMaterial; } return 1F; }
Ici j’ai fais en sorte que si la méthode canHarvestBlock vaut true alors on renvoie la valeur du ToolMaterial sinon la valeur vaut 1.
Bonus
Comme pour un outil normal vous pouvez rajouter la méthode getIsRepairable pour définir un Item pour réparer dans l’enclume ou pour que l’outil ne soit pas repairable.
@Override public boolean getIsRepairable(ItemStack toRepair, ItemStack repair) { return repair.getItem() == Items.DIAMOND; }
Résultat
Voir la vidéo
En vidéo
https://www.youtube.com/watch?v=xUk2nEGV_8c
Crédits
Rédaction :
- ZomDev
Correction :
Ce tutoriel de ZomDev publié sur Minecraft Forge France est mis à disposition selon les termes de la licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 4.0 International