Aller au contenu

Leaderboard


Popular Content

Showing content with the highest reputation on 09/28/16 in all areas

  1. 1 point
    Bonjour, la commu' IronCraft ! PS : Dans le futur je vais update ce post en 1.8 Introduction Vous voulez créer un item qui peux faire à la fois Pioche,Hache et pelle ? Ehh bien vous êtes très bien arrivez car ce tutoriel est fais pour sa ! Sommaire Coté Client 1 ► Création de l'item dans Item.java 2 ► Création de la classe Paxel.java Coté Spigot 1 ► Création de l'item dans Item.java 2 ► Création de la classe Paxel.java 1) Création de l'item dans Item.java (Coté Client) Bon commençons ! Tous d'abord nous devons répertorié notre futur item dans Item.java et Items.java dans le moment vous devriez faire ceci sans trop de difficulté. Voilà à quoi sa devrais ressemblé dans Item.java : itemRegistry.addObject(ID, "Nom de l'item", new Paxel(Item.ToolMaterial.NIVEAUDEMATERIEL).setCreativeTab(CreativeTabs.tabInventory).setUnlocalizedName("Nom de l'item").setTextureName("Nom de la texture de l'item")); Logiquement vous devriez avoir une erreur car la classe Paxel n'est pas encore créer donc si vous avez une erreur c'est totalement normal.. Et dans Items.java sa devrais ressemblé à sa : public static final Item NomItem = (Item)Item.itemRegistry.getObject("Nom de l'item"); Voilà si vous avez fais sa pour le reste vous devriez vous en sortir ;) Passons à la créations de la classe Paxel 2) Création de la classe Paxel.java (Coté Client) Passons au plus intéressant tous d'abord créer votre classe Paxel et l'extends en ItemTool et pas oubliez pas de générer les constructeurs sa devrais ressemblé à sa : package fr.reizam.api; import java.util.Set; import net.minecraft.item.ItemTool; public class Paxel extends ItemTool{ protected Paxel(float p_i45333_1_, ToolMaterial p_i45333_2_, Set p_i45333_3_) { super(p_i45333_1_, p_i45333_2_, p_i45333_3_); // TODO Auto-generated constructor stub } } Tous d'abord supprimé le float p_i45333_1 et le Set p_i45333_3 car nous n'avons pas besoin pour ce tutoriel. Juste après il va falloir répertorié tous les blocks qu'il faudra casser heureusement j'ai déjà tous fais comme sa vous n'aurez pas à vous cassez la tête a tous récrire les blocks du coup déclaré ceci haut dessus de mon constructor Paxel: private static final Set BlocksRegistered = Sets.newHashSet(new Block[] {Blocks.cobblestone, Blocks.double_stone_slab, Blocks.stone_slab, Blocks.stone, Blocks.sandstone, Blocks.mossy_cobblestone, Blocks.iron_ore, Blocks.iron_block, Blocks.coal_ore, Blocks.gold_block, Blocks.gold_ore, Blocks.diamond_ore, Blocks.diamond_block, Blocks.ice, Blocks.netherrack, Blocks.lapis_ore, Blocks.lapis_block, Blocks.redstone_ore, Blocks.lit_redstone_ore, Blocks.rail, Blocks.detector_rail, Blocks.golden_rail, Blocks.activator_rail,Blocks.planks, Blocks.bookshelf, Blocks.log, Blocks.log2, Blocks.chest, Blocks.pumpkin, Blocks.lit_pumpkin,Blocks.grass, Blocks.dirt, Blocks.sand, Blocks.gravel, Blocks.snow_layer, Blocks.snow, Blocks.clay, Blocks.farmland, Blocks.soul_sand, Blocks.mycelium}); Vous pouvez si vous voulez rajoutez des blocks dans la HashSet ! Et n'oubliez pas dans le super de mettre le nom de variable du Set pour qu'il soit bien répertorié aussi non sa ne marchera pas comme ceci : super(p_i45333_1_, p_i45333_2_, BlocksRegistered); Mais ce n'est pas tous ! Car oui dans chaque pelle,pioche et hache il y a toujours des blocks spéciale qui vont cassé un peu moins/plus rapide donc pour ce faire il faudra rajouter 2 méthodes (func_150897_b et func_150893_a) Pour ce faire j'ai déjà fait les méthodes pour vous mais je vais quand même vous expliqué ! Tous d'abord insérée ces deux methods : public boolean func_150897_b(Block p_150897_1_) { return p_150897_1_ == Blocks.snow_layer ? true : p_150897_1_ == Blocks.snow && p_150897_1_ == Blocks.obsidian ? this.toolMaterial.getHarvestLevel() == 3 : (p_150897_1_ != Blocks.diamond_block && p_150897_1_ != Blocks.diamond_ore ? (p_150897_1_ != Blocks.emerald_ore && p_150897_1_ != Blocks.emerald_block ? (p_150897_1_ != Blocks.gold_block && p_150897_1_ != Blocks.gold_ore ? (p_150897_1_ != Blocks.iron_block && p_150897_1_ != Blocks.iron_ore ? (p_150897_1_ != Blocks.lapis_block && p_150897_1_ != Blocks.lapis_ore ? (p_150897_1_ != Blocks.redstone_ore && p_150897_1_ != Blocks.lit_redstone_ore ? (p_150897_1_.getMaterial() == Material.rock ? true : (p_150897_1_.getMaterial() == Material.iron ? true : p_150897_1_.getMaterial() == Material.anvil)) : this.toolMaterial.getHarvestLevel() >= 2) : this.toolMaterial.getHarvestLevel() >= 1) : this.toolMaterial.getHarvestLevel() >= 1) : this.toolMaterial.getHarvestLevel() >= 2) : this.toolMaterial.getHarvestLevel() >= 2) : this.toolMaterial.getHarvestLevel() >= 2); } public float func_150893_a(ItemStack p_150893_1_, Block p_150893_2_) { return p_150893_2_.getMaterial() != Material.wood && p_150893_2_.getMaterial() != Material.plants && p_150893_2_.getMaterial() != Material.vine && p_150893_2_.getMaterial() != Material.iron && p_150893_2_.getMaterial() != Material.anvil && p_150893_2_.getMaterial() != Material.rock ? super.func_150893_a(p_150893_1_, p_150893_2_) : this.efficiencyOnProperMaterial; } La question est pourquoi la méthodes func_150897_b est là ? Car tous simplement nous allons comme exemple l'obsidian qui lui nécessite une pioche en diamant pour le récupérer justement comme vous pouvez voir cet méthode retourne un boolean (Vrai ou faux) donc ce qui veux dire en gros trés gros Si pioche en diamant alors drop l'item au sol. Et la méthodes func_150893_a ? Cet methodes retourne juste le niveau d’efficacité pour certain Item/Block. Donc voilà n'oubliez pas dans le super de précisez le float au début comme ceci : protected Paxel(ToolMaterial p_i45333_2_) { super(3.0F, p_i45333_2_, BlocksRegistered); } Et voilà dans votre class Paxel vous devriez avoir maintenant : package fr.reizam.api; import java.util.Set; import com.google.common.collect.Sets; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; import net.minecraft.item.ItemTool; public class Paxel extends ItemTool{ private static final Set BlocksRegistered = Sets.newHashSet(new Block[] {Blocks.cobblestone, Blocks.double_stone_slab, Blocks.stone_slab, Blocks.stone, Blocks.sandstone, Blocks.mossy_cobblestone, Blocks.iron_ore, Blocks.iron_block, Blocks.coal_ore, Blocks.gold_block, Blocks.gold_ore, Blocks.diamond_ore, Blocks.diamond_block, Blocks.ice, Blocks.netherrack, Blocks.lapis_ore, Blocks.lapis_block, Blocks.redstone_ore, Blocks.lit_redstone_ore, Blocks.rail, Blocks.detector_rail, Blocks.golden_rail, Blocks.activator_rail,Blocks.planks, Blocks.bookshelf, Blocks.log, Blocks.log2, Blocks.chest, Blocks.pumpkin, Blocks.lit_pumpkin,Blocks.grass, Blocks.dirt, Blocks.sand, Blocks.gravel, Blocks.snow_layer, Blocks.snow, Blocks.clay, Blocks.farmland, Blocks.soul_sand, Blocks.mycelium}); protected Paxel(ToolMaterial p_i45333_2_) { super(3.0F, p_i45333_2_, BlocksRegistered); } public boolean func_150897_b(Block p_150897_1_) { return p_150897_1_ == Blocks.snow_layer ? true : p_150897_1_ == Blocks.snow && p_150897_1_ == Blocks.obsidian ? this.toolMaterial.getHarvestLevel() == 3 : (p_150897_1_ != Blocks.diamond_block && p_150897_1_ != Blocks.diamond_ore ? (p_150897_1_ != Blocks.emerald_ore && p_150897_1_ != Blocks.emerald_block ? (p_150897_1_ != Blocks.gold_block && p_150897_1_ != Blocks.gold_ore ? (p_150897_1_ != Blocks.iron_block && p_150897_1_ != Blocks.iron_ore ? (p_150897_1_ != Blocks.lapis_block && p_150897_1_ != Blocks.lapis_ore ? (p_150897_1_ != Blocks.redstone_ore && p_150897_1_ != Blocks.lit_redstone_ore ? (p_150897_1_.getMaterial() == Material.rock ? true : (p_150897_1_.getMaterial() == Material.iron ? true : p_150897_1_.getMaterial() == Material.anvil)) : this.toolMaterial.getHarvestLevel() >= 2) : this.toolMaterial.getHarvestLevel() >= 1) : this.toolMaterial.getHarvestLevel() >= 1) : this.toolMaterial.getHarvestLevel() >= 2) : this.toolMaterial.getHarvestLevel() >= 2) : this.toolMaterial.getHarvestLevel() >= 2); } public float func_150893_a(ItemStack p_150893_1_, Block p_150893_2_) { return p_150893_2_.getMaterial() != Material.wood && p_150893_2_.getMaterial() != Material.plants && p_150893_2_.getMaterial() != Material.vine && p_150893_2_.getMaterial() != Material.iron && p_150893_2_.getMaterial() != Material.anvil && p_150893_2_.getMaterial() != Material.rock ? super.func_150893_a(p_150893_1_, p_150893_2_) : this.efficiencyOnProperMaterial; } } Vous devriez plus avoir d'erreur dans votre classe Item.java et l'item devrez marché n'oubliez de mettre une texture pour faire plus jolie et mettre son nom dans le dossier lang en_US.lang. Passons au Spigot ! 1) Création de l'item dans Item.java (Coté Spigot) Pour la partie spigot je vais moins expliqué car c'est exactement le même principe que le client sauf que les noms des méthodes change... Tous d'abord comme dans notre client nous devons répertorié notre futur item dans Item.java et Items.java. Voilà à quoi sa devrais ressemblé dans Item.java : REGISTRY.a(ID, "Nom de l'item", new Paxel(Item.ToolMaterial.NIVEAUDEMATERIAL).c("Nom de l'item").f("Nom de l'item")); Logiquement vous devriez avoir une erreur car la classe Paxel n'est pas encore créer donc si vous avez une erreur c'est totalement normal.. Et dans Items.java sa devrais ressemblé à sa : public static final Item NomItem = (Item)Item.REGISTRY.get("Nom de l'item"); Voilà si vous avez fais sa pour le reste vous devriez vous en sortir ;) Passons à la créations de la classe Paxel 2) Création de la classe Paxel.java (Coté Spigot) Vu que je vous ai déjà tous expliqué dans la partie Client je vais direct vous donnez le code à mettre sans trop d'explication! Comme je vous ai dit précédemment il y a une méthode qui retourne vrai ou faux si il doit droppé l'item si il a une pioche quelconque et une autres méthodes qui change l’efficacité pour certain Blocks. Voilà donc ce qui y'a a mettre dans la classe Paxel dans le spigot : package net.minecraft.server; import java.util.Set; import com.google.common.collect.Sets; public class Paxel extends ItemTool{ private static final Set c = Sets.newHashSet(new Block[] { Blocks.COBBLESTONE, Blocks.DOUBLE_STEP, Blocks.STEP, Blocks.STONE, Blocks.SANDSTONE, Blocks.MOSSY_COBBLESTONE, Blocks.IRON_ORE, Blocks.IRON_BLOCK, Blocks.COAL_ORE, Blocks.GOLD_BLOCK, Blocks.GOLD_ORE, Blocks.DIAMOND_ORE, Blocks.DIAMOND_BLOCK, Blocks.ICE, Blocks.NETHERRACK, Blocks.LAPIS_ORE, Blocks.LAPIS_BLOCK, Blocks.REDSTONE_ORE, Blocks.GLOWING_REDSTONE_ORE, Blocks.RAILS, Blocks.DETECTOR_RAIL, Blocks.GOLDEN_RAIL, Blocks.ACTIVATOR_RAIL, Blocks.WOOD, Blocks.BOOKSHELF, Blocks.LOG, Blocks.LOG2, Blocks.CHEST, Blocks.PUMPKIN, Blocks.JACK_O_LANTERN, Blocks.GRASS, Blocks.DIRT, Blocks.SAND, Blocks.GRAVEL, Blocks.SNOW, Blocks.SNOW_BLOCK, Blocks.CLAY, Blocks.SOIL, Blocks.SOUL_SAND, Blocks.MYCEL}); protected Paxel(EnumToolMaterial arg1) { super(3.0F, arg1, c); } public boolean canDestroySpecialBlock(Block paramBlock) { if (paramBlock == Blocks.OBSIDIAN) { return this.b.d() == 3; } if ((paramBlock == Blocks.DIAMOND_BLOCK) || (paramBlock == Blocks.DIAMOND_ORE)) { return this.b.d() >= 2; } if ((paramBlock == Blocks.EMERALD_ORE) || (paramBlock == Blocks.EMERALD_BLOCK)) { return this.b.d() >= 2; } if ((paramBlock == Blocks.GOLD_BLOCK) || (paramBlock == Blocks.GOLD_ORE)) { return this.b.d() >= 2; } if ((paramBlock == Blocks.IRON_BLOCK) || (paramBlock == Blocks.IRON_ORE)) { return this.b.d() >= 1; } if ((paramBlock == Blocks.LAPIS_BLOCK) || (paramBlock == Blocks.LAPIS_ORE)) { return this.b.d() >= 1; } if ((paramBlock == Blocks.REDSTONE_ORE) || (paramBlock == Blocks.GLOWING_REDSTONE_ORE)) { return this.b.d() >= 2; } if (paramBlock.getMaterial() == Material.STONE) { return true; } if (paramBlock.getMaterial() == Material.ORE) { return true; } if (paramBlock.getMaterial() == Material.HEAVY) { return true; } if (paramBlock == Blocks.SNOW) { return true; } if (paramBlock == Blocks.SNOW_BLOCK) { return true; } return false; } public float getDestroySpeed(ItemStack paramItemStack, Block paramBlock) { if ((paramBlock.getMaterial() == Material.ORE) || (paramBlock.getMaterial() == Material.HEAVY) || (paramBlock.getMaterial() == Material.STONE || paramBlock.getMaterial() == Material.WOOD) || (paramBlock.getMaterial() == Material.PLANT) || (paramBlock.getMaterial() == Material.REPLACEABLE_PLANT)) { return this.a; } return super.getDestroySpeed(paramItemStack, paramBlock); } } Et voilà nous avons maintenant l'item du coté spigot et client vous avez désormais votre PAXEL ! N'oubliez pas que le but n'est pas de recopier bêtement les codes le but est tous simplement de quand même comprendre pourquoi c'est fait comme sa ! Merci d'avoir lu mon post ! a+
  2. 1 point
    Créer son propre launcher personalisé de zéro, tutoriels vidéos Bien le bonjour chers utilisateurs d'Ironcraft ! J'ai créé une série de tutoriels vidéos sur Youtube permettant la création d'un launcher Minecraft à partir de rien (c'est vous qui créez les sources) et donc entièrement personnalisable. Ils sont basé sur mes librairies open-source que vous pouvez retrouver là : https://github.com/Litarvan/ Bon visionnage ^^ Attention, pour la vidéo deux prenez bien l'OpenLauncherLib 2.1, pour la trois il faudra après regarder la vidéo 4.1. Aussi, les liens de téléchargement sont dans la description de la première vidéo. Et GSON est intégré à SUpdate depuis la 3.1 (entièrement compatible) Et, vos avez le droit de vendre un launcher fait avec ce tutoriel sans me citer ni rien me verser, tant que vous ne vous appropriez pas les libs. Épisode 1 : http://youtube.com/watch?v=37a3vK_M6-A Épisode 2 : http://youtube.com/watch?v=V2Q6KcYB2Cw Épisode 3 (optionnel) : http://youtube.com/watch?v=J2HiK0Rnx50 Mises à jour ! Épisode 4.1 : http://youtube.com/watch?v=54jKg_oNsQA Pour tout problème, une FAQ est disponible ici : https://www.dropbox.com/s/dlgauk2fxgs27e1/TheShark34%20-%20Livre%20de%20Support%20%28Decembre%202015%29.pdf?dl=0
  3. 1 point
    Rejoignez-nous : http://minemarket.fr/
  4. 1 point
    6 ans que je joue à Minecraft et je n'ai jamais vu ça. Tes tarifs sont à partir de 50 euros sur le site, c'est honteux. Qui oserait payer, personne n'est trop naïf pour dépenser autant, c'est ce que je reçois pour un anniversaire ! Jamais je claquerai ça pour un launcher, surtout qu'en 2016 ça se fait super simplement !
×