ReiZam

Membre
  • Compteur de contenus

    76
  • Inscription

  • Dernière visite

  • Days Won

    6

ReiZam last won the day on 18 mars

ReiZam had the most liked content!

Réputation sur la communauté

3 Réputation

3 abonnés

À propos de ReiZam

  • Rang
    Connaisseur
  • Date de naissance

Jeux

  • Minecraft
    ReiZam
  1. ^^
  2. Je confirme une version vanilla serais énorme
  3. Bonjour vos services m'intéresse merci de m'ajouter skype et d'en parler par la suite... (Mon skype: superthekarl)
  4. GhostyManiakk

    , j'aimerais passé en PaperSpigot car on me la conseillée par rapport à l'optimisation et les eventuelles failles résolu mais je ne trouve pas comment faire si tu pourrais m'aider ^^ sa serais vraiment cool.

    Clairement si tu m'aide bien j'peux rémunérée car sa fais longtemp que je cherche comment moddé et obtenir paperspigot ^^

    1. Afficher les commentaires précedents  1 autres
    2. Hypnozz

      Hypnozz

      Je connais paperspigot et c'est une vrai galere... Ca ne communique pas bien avec le plugin essential et créé pleins d'erreurs avec essential, worldGuard... A éviter à tout prix.

    3. ReiZam

      ReiZam

      Au contraire ^^

    4. Hypnozz

      Hypnozz

      Fais ce que tu veux mais tu verras que ça ne fonctionne pas avec essential ;)

  5. Okey pas de problème ^^ Une fois fini il va être moov quand dans "Astuces"
  6. 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+
  7. Vanilla

    La vidéo n'est plus disponnible :/
  8. Hey! chaos90 sa serais pour te demander comment faire un ToggleSprint ?