chaos90

Membre
  • Compteur de contenus

    278
  • Inscription

  • Dernière visite

  • Days Won

    8

Tout ce qui a été posté par chaos90

  1. Vanilla

    je sais que tout le monde attendent à ce que quelqu'un fasse un tutoriel en VANILLA pour le StatusEffectHUD alors je l'ai fais et je vous le fais partager StatusEffectHUD en Vanilla -[iNTRODUCTION]- Bonjour à tous ! Dans ce tutoriel, nous allons faire un StatusEffectHUD commençons sans attendre -[sOMMAIRE]- 1]Création d'un "if" 2]Création d'un "for" 3]LesIcônes 4] Afficher les niveaux des effets 1]Création d'un "if" Tout d'abord on va aller dans le GuiIngame.java puis on va aller dans RenderGameOverlay mettre nos codes en dessus de ces 3 int : int var11; int var12; int var13; qui est en dessus de ce if : if (!this.mc.thePlayer.isPotionActive(Potion.confusion)) { float var10 = this.mc.thePlayer.prevTimeInPortal + (this.mc.thePlayer.timeInPortal - this.mc.thePlayer.prevTimeInPortal) * par1; if (var10 > 0.0F) { this.func_130015_b(var10, var6, var7); } } donc maintenant on va mettre notre if qui va dire que si il y a plus de 5 potion d'activer ça les empiles mais pour ça il faut déja mettre notre Collection pour les potions et aussi un int les voici : Collection ph1 = this.mc.thePlayer.getActivePotionEffects(); int ph2 = 33; j'ai mis ph pour PotionHUD maintenant le if c'est : if (ph1.size() > 5) //si les effect de potion activé est supérieur a 5 alors ... { ph2 = 132 / (ph1.size() - 1); ... il s'empile avec ces valeurs } 2]Création d'un "for" pour le "for" on va mettre tout ce qu'il faut pour que les effect de potion s'affiche avec le temps l'icone et le nom de la potion donc pour ça le "for" sera : for (Iterator ph3 = this.mc.thePlayer.getActivePotionEffects().iterator(); ph3.hasNext(); var2 += ph2) { donc ici on a crée un Iterator qui va donc nous permettre d'avencer sauf que normalement vous avez une erreur sur me var2 et nous allons ajouter en même un autre var qui nous servira plus bas donc plus haut avant le if il suffis de mettre ceci : int var2 = 0; int var1 = 0; donc maintenant dans notre for on va rajouter quelque variables pour qu'il aille chercher les effets de potions : PotionEffect ph4 = (PotionEffect)ph3.next(); Potion ph5 = Potion.potionTypes[ph4.getPotionID()]; // ici on va chercher le type de potion qui est actif GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); pour le text c'est avec le niveaux des potion donc c'est plus bas maintenant on a just le nom de la potion qui s'affiche maintenant on veut sa durée : this.mc.fontRenderer.drawStringWithShadow(Potion.getDurationString(ph4), var1 + 10 + 18, var2 + 6 + 10, 8355711); //ici on affiche la duré de l'effet en court ce qui nous donne pour le moment ceci : //début du code PotionEffectHUD int var1 = 0; int var2 = 0; int ph2 = 33; Collection ph1 = this.mc.thePlayer.getActivePotionEffects(); if (ph1.size() > 5) { ph2 = 132 / (ph1.size() - 1); } for (Iterator ph3 = this.mc.thePlayer.getActivePotionEffects().iterator(); ph3.hasNext(); var2 += ph2) { PotionEffect ph4 = (PotionEffect)ph3.next(); Potion ph5 = Potion.potionTypes[ph4.getPotionID()]; GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); this.mc.fontRenderer.drawStringWithShadow(Potion.getDurationString(ph4), var1 + 10 + 18, var2 + 6 + 10, 8355711); } //fin code PotionEffectHUD 3] LesIcônes maintenant il faut afficher certaine chose comme le contour (ou pas si vous voulez pas il suffis de retirer le code que je vais vous donner) et les icônes donc pour les icônes on va déjà rajouter un bindTexture tout en haut du GuiIngame.java : protected static final ResourceLocation inventory = new ResourceLocation("textures/gui/container/inventory.png"); voilà et dans notre "for" on va rajouter en dessus de : GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); on va mettre : this.mc.getTextureManager().bindTexture(inventory); // ici on va chercher la texture maintenant on va chercher les icônes dans ce .png donc on ajouter un if : if (ph5.hasStatusIcon()) { int ph6 = ph5.getStatusIconIndex(); this.drawTexturedModalRect(var1 + 6, var2 + 7, 0 + ph6 % 8 * 18, 198 + ph6 / 8 * 18, 18, 18); //on va chercher l'icône et on le place ou il faut } si vous voulez le contour il suffis d'ajouter cette ligne au dessus du if des icônes : this.drawTexturedModalRect(var1, var2, 0, 166, 140, 32); // ici on affiche le contour si vous avez envis d'enlever le contour il suffis d'enlever cette ligne 4] Afficher les niveaux des effets donc pour afficher le niveaux des effets on va déja rajouter en dessus de notre deuxième if pour afficher les icônes un String qui va chercher le nom en fonction de leur ID : String ph7 = I18n.format(ph5.getName()/*ici il cherche le nom*/, new Object[0]); maintenant que on a ça on va pouvoir afficher le niveau pour cela rien de plus simple on fais des "if" et des "else if" donc on commence par le niveau 2 car le niveau 1 ne s'affiche pas donc on met : if (ph4.getAmplifier() == 1) // si la potion a un niveau de 1 qui est le niveau 2 car le niveau 1 c'est 0 alors .... { ph7 = ph7 + " II" ;// ... on affiche a coté du nom de la potion "II" } et maintenant on va faire ça pour 4 niveaux donc en dessus de ça on ajoute : else if (ph4.getAmplifier() == 2)// si la potion a un niveau de 2 qui est 3 alors ... { ph7 = ph7 + " III"; // on affiche a coté du nom de la potion "III" } else if (ph4.getAmplifier() == 3) // si la potion a un niveau de 3 qui est 4 alors ... { ph7 = ph7 + " IV"; // on affiche a coté du nom de la potion "IV" } maintenant que on a ça il faut le placer donc en dessous du if on ajoute : this.mc.fontRenderer.drawStringWithShadow(ph7, var1 + 10 + 18, var2 + 6, 16777215); //ici on place le nom de la potion ou il faut ce qui nous donne au finale tout ceci : //début du code PotionEffectHUD int var1 = 0; int var2 = 0; int ph2 = 33; Collection ph1 = this.mc.thePlayer.getActivePotionEffects(); if (ph1.size() > 5) { ph2 = 132 / (ph1.size() - 1); } for (Iterator ph3 = this.mc.thePlayer.getActivePotionEffects().iterator(); ph3.hasNext(); var2 += ph2) { PotionEffect ph4 = (PotionEffect)ph3.next(); Potion ph5 = Potion.potionTypes[ph4.getPotionID()]; GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); this.mc.getTextureManager().bindTexture(inventory); this.drawTexturedModalRect(var1, var2, 0, 166, 140, 32); if (ph5.hasStatusIcon()) { int ph6 = ph5.getStatusIconIndex(); this.drawTexturedModalRect(var1 + 6, var2 + 7, 0 + ph6 % 8 * 18, 198 + ph6 / 8 * 18, 18, 18); } String ph7 = I18n.format(ph5.getName(), new Object[0]); if (ph4.getAmplifier() == 1) { ph7 = ph7 + " II" ; } else if (ph4.getAmplifier() == 2) { ph7 = ph7 + " III"; } else if (ph4.getAmplifier() == 3) { ph7 = ph7 + " IV"; } this.mc.fontRenderer.drawStringWithShadow(ph7, var1 + 10 + 18, var2 + 6, 16777215); this.mc.fontRenderer.drawStringWithShadow(Potion.getDurationString(ph4), var1 + 10 + 18, var2 + 6 + 10, 8355711); } //fin code PotionEffectHUD voilà le tutoriel est terminé bon jeu avec votre StatusEffectHUD !
  2. Item qui fait spawn un mob en Vanilla -[iNTRODUCTION]- Bonjour à tous ! Dans ce tutoriel, nous allons faire un Item qui fait spawn un mob, commençons sans attendre -[sOMMAIRE]- 1]Création d'un classe ordinaire 2]Création d'une méthode onItemUse 3]Faire spawner le mob 4] Craftbukkit 1]Création d'une classe ordinaire Commençons par créer une class ordinaire. package fr.tonnom.tonmod; public class ItemMob { public ItemMob() { } } Puis nous allons ajouter le stack maximum (pour moi ce sera 1), sa durabilité (pour moi ce sera 5) et l'emplacement dans l'inventaire creatif. Nous allons donc ajouter ces deux lignes : this.setCreativeTab(CreativeTabs.tabMisc); this.setMaxDamage(5); this.setMaxStackSize(1); dans le " public void ItemMob() " 2] Création d'une méthodeonItemUse Commençons par créer notre méthode en boolean, qui va s'éxécuter lors de l'utilisation de l'item. public boolean onItemUse(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, World par3World, int par4, int par5, int par6, int par7, float par8, float par9, float par10) return true; } Ensuite ajoutons-y ce qu'il nous faut, c'est à dire récupérer les informations du bloc clicker public boolean onItemUse(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, World par3World, int par4, int par5, int par6, int par7, float par8, float par9, float par10) { par1ItemStack.damageItem(1, par2EntityPlayer); // ici nous faisons en sorte que la durabilité baisse de 1 après un click droit if (par3World.isClient) // si le mon est Client alors... { return true; // ... ça renvoi true ... } else // ... sinon ... { Block var11 = par3World.getBlock(par4, par5, par6); // on récupère le bloc par4 += Facing.offsetsXForSide[par7]; // ------ par5 += Facing.offsetsYForSide[par7]; // | -- on récupère les coordonnées par6 += Facing.offsetsZForSide[par7]; //------- double var12 = 0.0D; if (par7 == 1 && var11.getRenderType() == 11) { var12 = 0.5D; } Entity var14 = spawnCreature(par3World, 2, (double)par4 + 0.5D, (double)par5 + var12, (double)par6 + 0.5D); if (var14 != null) { if (var14 instanceof EntityLivingBase && par1ItemStack.hasDisplayName()) { ((EntityLiving)var14).setCustomNameTag(par1ItemStack.getDisplayName()); } } return true; } } 3] Faire spawner le mob Ici nous allons créér notre méthode " spawnCreature "en static public static Entity spawnCreature(World par0World, int par1, double par2, double par4, double par6) { } Puis nous allons mettre tout ce qu'il nous faut à lintérieur, c'est à dire la récupération du mob. public static Entity spawnCreature(World par0World, int par1, double par2, double par4, double par6) { Entity var8 = null; for (int var9 = 0; var9 < 1; ++var9) // nous créons une boucle " for " { var8 = EntityList.createEntityByID(50, par0World); // ici nous allons faire spawner un creeper qui a l'id " 50 " donc nous récupérons le mob. if (var8 != null && var8 instanceof EntityLivingBase) // donc si le mob n'est pas = à null et qu'il instance bien EntityLivingBase alors ... { EntityLiving var10 = (EntityLiving)var8; var8.setLocationAndAngles(par2, par4, par6, MathHelper.wrapAngleTo180_float(par0World.rand.nextFloat() * 360.0F), 0.0F); // --------------------------------- var10.rotationYawHead = var10.rotationYaw; // | // on défini les positions du mob. var10.renderYawOffset = var10.rotationYaw; //------------- var10.onSpawnWithEgg((IEntityLivingData)null); par0World.spawnEntityInWorld(var8); // on fait spawn l'entité var10.playLivingSound(); // on émet son bruit. } } return var8; } ce qui nous donne au final : package fr.tonnom.tonmod; public class ItemMob extends Item { public ItemMob() { this.setCreativeTab(CreativeTabs.tabMisc); this.setMaxDamage(5); this.setMaxStackSize(1); } public boolean onItemUse(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, World par3World, int par4, int par5, int par6, int par7, float par8, float par9, float par10) { par1ItemStack.damageItem(1, par2EntityPlayer); if (par3World.isClient) { return true; } else { Block var11 = par3World.getBlock(par4, par5, par6); par4 += Facing.offsetsXForSide[par7]; par5 += Facing.offsetsYForSide[par7]; par6 += Facing.offsetsZForSide[par7]; double var12 = 0.0D; if (par7 == 1 && var11.getRenderType() == 11) { var12 = 0.5D; } Entity var14 = spawnCreature(par3World, 2, (double)par4 + 0.5D, (double)par5 + var12, (double)par6 + 0.5D); if (var14 != null) { if (var14 instanceof EntityLivingBase && par1ItemStack.hasDisplayName()) { ((EntityLiving)var14).setCustomNameTag(par1ItemStack.getDisplayName()); } } return true; } } public static Entity spawnCreature(World par0World, int par1, double par2, double par4, double par6) { Entity var8 = null; for (int var9 = 0; var9 < 1; ++var9) { var8 = EntityList.createEntityByID(50, par0World); if (var8 != null && var8 instanceof EntityLivingBase) { EntityLiving var10 = (EntityLiving)var8; var8.setLocationAndAngles(par2, par4, par6, MathHelper.wrapAngleTo180_float(par0World.rand.nextFloat() * 360.0F), 0.0F); var10.rotationYawHead = var10.rotationYaw; var10.renderYawOffset = var10.rotationYaw; var10.onSpawnWithEgg((IEntityLivingData)null); par0World.spawnEntityInWorld(var8); var10.playLivingSound(); } } return var8; } } 4] Craftbukkit Pour le craftbukkit c'est le même concept donc je vous donne le code directement : 1.7.2 : package net.minecraft.server; public class ItemMob extends Item { public ItemMob(){ this.maxStackSize = 1; this.setMaxDurability(5); } public boolean interactWith(ItemStack itemstack, EntityHuman entityhuman, World world, int i, int j, int k, int l, float f, float f1, float f2) { itemstack.damage(1, entityhuman); if (world.isStatic || itemstack.getData() == 48 || itemstack.getData() == 49 || itemstack.getData() == 63 || itemstack.getData() == 64) { return true; } else { Block block = world.getType(i, j, k); i += Facing.b[l]; j += Facing.c[l]; k += Facing.d[l]; double d0 = 0.0D; if (l == 1 && block.b() == 11) { d0 = 0.5D; } Entity entity = a(world, 2, (double) i + 0.5D, (double) j + d0, (double) k + 0.5D); if (entity != null) { if (entity instanceof EntityLiving && itemstack.hasName()) { ((EntityInsentient) entity).setCustomName(itemstack.getName()); } } return true; } } public static Entity a(World world, int i, double d0, double d1, double d2) { return spawnCreature(world, i, d0, d1, d2, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.SPAWNER_EGG); } public static Entity spawnCreature(World world, int i, double d0, double d1, double d2, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason spawnReason) { Entity entity = null; for (int j = 0; j < 1; ++j) { entity = EntityTypes.a(50, world); if (entity != null && entity instanceof EntityLiving) { EntityInsentient entityinsentient = (EntityInsentient) entity; entity.setPositionRotation(d0, d1, d2, MathHelper.g(world.random.nextFloat() * 360.0F), 0.0F); entityinsentient.aO = entityinsentient.yaw; entityinsentient.aM = entityinsentient.yaw; entityinsentient.a((GroupDataEntity) null); world.addEntity(entity, spawnReason); entityinsentient.r(); } } return entity; } } 1.7.10 : package net.minecraft.server; public class ItemMob extends Item { public ItemMob(){ this.maxStackSize = 1; this.setMaxDurability(5); } public boolean interactWith(ItemStack itemstack, EntityHuman entityhuman, World world, int i, int j, int k, int l, float f, float f1, float f2) { itemstack.damage(1, entityhuman); if (world.isStatic || itemstack.getData() == 48 || itemstack.getData() == 49 || itemstack.getData() == 63 || itemstack.getData() == 64) { return true; } else { Block block = world.getType(i, j, k); i += Facing.b[l]; j += Facing.c[l]; k += Facing.d[l]; double d0 = 0.0D; if (l == 1 && block.b() == 11) { d0 = 0.5D; } Entity entity = a(world, 2, (double) i + 0.5D, (double) j + d0, (double) k + 0.5D); if (entity != null) { if (entity instanceof EntityLiving && itemstack.hasName()) { ((EntityInsentient) entity).setCustomName(itemstack.getName()); } } return true; } } public static Entity a(World world, int i, double d0, double d1, double d2) { return spawnCreature(world, i, d0, d1, d2, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.SPAWNER_EGG); } public static Entity spawnCreature(World world, int i, double d0, double d1, double d2, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason spawnReason) { Entity entity = null; for (int j = 0; j < 1; ++j) { entity = EntityTypes.a(50, world); if (entity != null && entity instanceof EntityLiving) { EntityInsentient entityinsentient = (EntityInsentient) entity; entity.setPositionRotation(d0, d1, d2, MathHelper.g(world.random.nextFloat() * 360.0F), 0.0F); entityinsentient.aO = entityinsentient.yaw; entityinsentient.aM = entityinsentient.yaw; entityinsentient.prepare((GroupDataEntity) null); world.addEntity(entity, spawnReason); entityinsentient.r(); } } return entity; } } Et voilà merci d'avoir suivi ce tutoriel et je vous dit à bientôt ! 10/07/2015 21:24 Corrigé et mis en page par Zetsyog 11/07/2015 12:27 Fautes criminelles de convention corrigées par TheShark34
  3. Vanilla

    Hache de Combat -[iNTRODUCTION]- Bonjour à tous ! Dans ce tutoriel, nous allons faire une une hache de combat -[sOMMAIRE]- 1]Création de l'item 2]Création du ItemHacheDeCombat.java 3]Création du EnumHacheDeCombat 3]CraftBukkit 1]Création de l'item la création d'un item c'est pas quelque chose de compliqué il suffis de faire comme ceci : Item.java itemRegistry.addObject(ID, "NOM", (new ItemHacheDeCombat(Item.EnumHacheDeCombat.DIAMOND)).setUnlocalizedName("NOM").setTextureName("NOM_TEXTURE"))); il y a une erreur c'est normal pour le moment Items.java public static final Item NOM = (Item)Item.itemRegistry.getObject("NOM"); 2] Création du ItemHacheDeCombat.java donc comme je fais toujours on part de rien d'un class comme ceci : package votre_package; public class ItemHacheDeCombat { } donc ici on va tout de suite faire un extends de Item, ajouter un public qui va nous diriger vers notre enum un maxStackSize, déclarer notre enum et une durabilité qui sera dans notre enum : package votre_package; public class ItemHacheDeCombat extends Item { private float field_150934_a; private final EnumHacheDeCombat field_150933_b; public ItemHacheDeCombat(Item.EnumHacheDeCombat par1) { this.field_150933_b = par1; // déclaration du enum this.maxStackSize = 1; // stackable pas 1 this.setMaxDamage(par1.getMaxUses()); // durabilité se trouvant dans notre enum this.setCreativeTab(CreativeTabs.tabCombat); // on met notre hache dans le tab Combat du créatif this.field_150934_a = 4.0F + par1.getDamageVsEntity(); } } erreur pour le momentr c'est totalement normal maintenant on va crée quelque public comme l'enchante, une autre déclaration de l'enum si il est réparrable le maxITemUseDuration si l'item est en 3D, quand on casse un bloc si retire de la durabilité parreil pour les entité et faire en sorte que ça casse du bois comme une hache : public float func_150931_i() { return this.field_150933_b.getDamageVsEntity(); // l'item est fais pour tapé des entité } public float func_150893_a(ItemStack par1, Block par2) { Material var3 = par2.getMaterial(); return var3 != Material.wood && var3 != Material.plants && var3 != Material.vine && var3 != Material.field_151572_C ? 1.0F : 1.5F; // l'item peu cassé du bois comme une hache } public boolean hitEntity(ItemStack par1ItemStack, EntityLivingBase par2EntityLivingBase, EntityLivingBase par3EntityLivingBase) // si on tape une entité l'item perd de la durabilité { par1ItemStack.damageItem(1, par3EntityLivingBase); return true; } public boolean onBlockDestroyed(ItemStack par1, World par2, Block par3, int par4, int par5, int par6, EntityLivingBase par7) // si on casse un bloc avec l'item perd de la durabilité { if ((double)par3.getBlockHardness(par2, par4, par5, par6) != 0.0D) { par1.damageItem(2, par7); } return true; } public boolean isFull3D() { return true; } public int getMaxItemUseDuration(ItemStack par1ItemStack) { return 72000; } public int getItemEnchantability() { return this.field_150933_b.getEnchantability(); // l'item est enchantable } public String func_150932_j() { return this.field_150933_b.toString(); // déclaration de notre enum que on fera apres } public boolean getIsRepairable(ItemStack par1ItemStack, ItemStack par2ItemStack) { return this.field_150933_b.func_150995_f() == par2ItemStack.getItem() ? true : super.getIsRepairable(par1ItemStack, par2ItemStack); // l'item est réparrable } public Multimap getItemAttributeModifiers() { Multimap var1 = super.getItemAttributeModifiers(); var1.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), new AttributeModifier(field_111210_e, "Weapon modifier", (double)this.field_150934_a, 0)); return var1; } ce qui nous donne au final : package votre_package; import com.google.common.collect.Multimap; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.ai.attributes.AttributeModifier; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.item.EnumAction; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.world.World; public class ItemHacheDeCombat extends Item { private float field_150934_a; private final EnumHacheDeCombat field_150933_b; public ItemHacheDeCombat(Item.EnumHacheDeCombat par1) { this.field_150933_b = par1; this.maxStackSize = 1; this.setMaxDamage(par1.getMaxUses()); this.setCreativeTab(CreativeTabs.tabCombat); this.field_150934_a = 4.0F + par1.getDamageVsEntity(); } public float func_150931_i() { return this.field_150933_b.getDamageVsEntity(); } public float func_150893_a(ItemStack par1, Block par2) { Material var3 = par2.getMaterial(); return var3 != Material.wood && var3 != Material.plants && var3 != Material.vine && var3 != Material.field_151572_C ? 1.0F : 1.5F; } public boolean hitEntity(ItemStack par1ItemStack, EntityLivingBase par2EntityLivingBase, EntityLivingBase par3EntityLivingBase) { par1ItemStack.damageItem(1, par3EntityLivingBase); return true; } public boolean onBlockDestroyed(ItemStack par1, World par2, Block par3, int par4, int par5, int par6, EntityLivingBase par7) { if ((double)par3.getBlockHardness(par2, par4, par5, par6) != 0.0D) { par1.damageItem(2, par7); } return true; } public boolean isFull3D() { return true; } public int getMaxItemUseDuration(ItemStack par1ItemStack) { return 72000; } public int getItemEnchantability() { return this.field_150933_b.getEnchantability(); } public String func_150932_j() { return this.field_150933_b.toString(); } public boolean getIsRepairable(ItemStack par1ItemStack, ItemStack par2ItemStack) { return this.field_150933_b.func_150995_f() == par2ItemStack.getItem() ? true : super.getIsRepairable(par1ItemStack, par2ItemStack); } public Multimap getItemAttributeModifiers() { Multimap var1 = super.getItemAttributeModifiers(); var1.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), new AttributeModifier(field_111210_e, "Weapon modifier", (double)this.field_150934_a, 0)); return var1; } } 3] Création du EnumHacheDeCombat (dans Item.java pour client) donc pour le client l'enum se trouve dans Item tout en bas pour les outils et épée nous allons en crée une donc il suffis de copier et de coller voilà : public static enum EnumHacheDeCombat { WOOD("WOOD", 0, 0, 59, 3.0F, 0.0F, 15), STONE("STONE", 1, 1, 131, 5.0F, 1.0F, 5), IRON("IRON", 2, 2, 250, 7.0F, 2.0F, 14), DIAMOND("DIAMOND", 3, 3, 1561, 8.0F, 2.5F, 10), GOLD("GOLD", 4, 0, 32, 12.0F, 0.0F, 22); private final int harvestLevel; private final int maxUses; private final float efficiencyOnProperMaterial; private final float damageVsEntity; private final int enchantability; private static final Item.EnumHacheDeCombat[] $VALUES = new Item.EnumHacheDeCombat[]{WOOD, STONE, IRON, DIAMOND, GOLD}; private static final String __OBFID = "CL_00000042"; private EnumHacheDeCombat(String par1Str, int par2, int par3, int par4, float par5, float par6, int par7) { this.harvestLevel = par3; this.maxUses = par4; this.efficiencyOnProperMaterial = par5; this.damageVsEntity = par6; this.enchantability = par7; } public int getMaxUses() { return this.maxUses; } public float getEfficiencyOnProperMaterial() { return this.efficiencyOnProperMaterial; } public float getDamageVsEntity() { return this.damageVsEntity; } public int getHarvestLevel() { return this.harvestLevel; } public int getEnchantability() { return this.enchantability; } public Item func_150995_f() { return this == WOOD ? Item.getItemFromBlock(Blocks.planks) : (this == STONE ? Item.getItemFromBlock(Blocks.cobblestone) : (this == GOLD ? Items.gold_ingot : (this == IRON ? Items.iron_ingot : (this == DIAMOND ? Items.diamond : null)))); } } et normalement toutes les erreur devrai disparaître 4]CraftBukkit Item : REGISTRY.a(ID, "NOM", (new ItemHacheDeCombat(EnumHacheDeCombat.DIAMOND)).c("NOM").f("NOM_TEXTURE")); Items : public static final Item NOM = (Item)Item.REGISTRY.a("NOM"); ItemHacheDeCombat.java package net.minecraft.server; import net.minecraft.util.com.google.common.collect.Multimap; public class ItemHacheDeCombat extends Item { private float damage; private final EnumHacheDeCombat b; public ItemHacheDeCombat(EnumHacheDeCombat enumtoolmaterial) { this.b = enumtoolmaterial; this.maxStackSize = 1; this.setMaxDurability(enumtoolmaterial.a()); this.a(CreativeModeTab.j); this.damage = 4.0F + enumtoolmaterial.c(); } public float i() { return this.b.c(); } public float getDestroySpeed(ItemStack itemstack, Block block) { Material material = block.getMaterial(); return material != Material.WOOD && material != Material.PLANT && material != Material.REPLACEABLE_PLANT ? 1.0F : 1.5F; } public boolean a(ItemStack itemstack, EntityLiving entityliving, EntityLiving entityliving1) { itemstack.damage(1, entityliving1); return true; } public boolean a(ItemStack itemstack, World world, Block block, int i, int j, int k, EntityLiving entityliving) { if ((double) block.f(world, i, j, k) != 0.0D) { itemstack.damage(2, entityliving); } return true; } public int d_(ItemStack itemstack) { return 72000; } public int c() { return this.b.e(); } public String j() { return this.b.toString(); } public boolean a(ItemStack itemstack, ItemStack itemstack1) { return this.b.f() == itemstack1.getItem() ? true : super.a(itemstack, itemstack1); } public Multimap k() { Multimap multimap = super.k(); multimap.put(GenericAttributes.e.a(), new AttributeModifier(f, "Weapon modifier", (double) this.damage, 0)); return multimap; } } EnumHacheDeCombat.java package net.minecraft.server; public enum EnumHacheDeCombat { WOOD("WOOD", 0, 0, 59, 3.0F, 0.0F, 15), STONE("STONE", 1, 1, 131, 5.0F, 1.0F, 5), IRON("IRON", 2, 2, 250, 7.0F, 2.0F, 14), DIAMOND("DIAMOND", 3, 3, 1561, 8.0F, 2.5F, 10), GOLD("GOLD", 4, 0, 32, 12.0F, 0.0F, 22); private final int f; private final int g; private final float h; private final float i; private final int j; private static final EnumHacheDeCombat[] k = new EnumHacheDeCombat[] { WOOD, STONE, IRON, DIAMOND, GOLD}; private EnumHacheDeCombat(String s, int i, int j, int k, float f, float f1, int l) { this.f = j; this.g = k; this.h = f; this.i = f1; this.j = l; } public int a() { return this.g; } public float b() { return this.h; } public float c() { return this.i; } public int d() { return this.f; } public int e() { return this.j; } public Item f() { return this == WOOD ? Item.getItemOf(Blocks.WOOD) : (this == STONE ? Item.getItemOf(Blocks.COBBLESTONE) : (this == GOLD ? Items.GOLD_INGOT : (this == IRON ? Items.IRON_INGOT : (this == DIAMOND ? Items.DIAMOND : null)))); } } voilà bon jeu avec vos haches de combats
  4. Vanilla

    Esque vous vouliez toujours avoir un bloc comme un trampoline ? alors ce tuto est fais pour vous Un Bloc sauteur ! -[iNTRODUCTION]- Bonjour à tous ! Dans ce tutoriel, nous allons faire un bloc qui vous fais sauter ! -[sOMMAIRE]- 1]Création du Bloc 2]Création du BlocSauteur.java 3]CraftBukkit 1]Création du Bloc Bon pour crée un bloc on fais comme d'habitude ce n'est pas nouveau il suffis de mettre dans Block et Blocks : Block.java blockRegistry.addObject(ID, "NOM_DU_BLOC", (new BlockSauteur()).setHardness(1.0F).setStepSound(SON).setBlockName("NOM_DU_BLOC").setBlockTextureName("TEXTURE_DU_BLOC")); Blocks.java public static final Block NOM_DU_BLOC = (Block)Block.blockRegistry.getObject("NOM_DU_BLOC"); 2]Création du BlockSauteur.java Ici on va faire le BlockSauteur.java pour que le joueur sois vachement plus rapide quand il marche sur se Bloc pour ça on va commencer par crée notre class sans rien dessus : package votre_package; public class BlockSauteur{ } ensuite on va déja rajouter un extends du Block.java,mettre un nouveau public ou on va rajouter un material et un emplacement dans le creativetab qui sera celui des Blocs package votre_package; import net.minecraft.block.Block;import net.minecraft.block.material.Material; import net.minecraft.creativetab.CreativeTabs; public class BlockSauteur extends Block { public BlockSauteur() { super(Material.rock); this.setCreativeTab(CreativeTabs.tabBlock); //creative tab, on met le bloc dans l'onglet bloc du creatif } } Maintenant il faut ajouter certaine fonction par exemple pour entrer en contact avec le bloc pour qu'il nous fasse sauter. Nous somme obligé mettre minimum 1 pixel pour entrer dedans voici comment on fais : public AxisAlignedBB getCollisionBoundingBoxFromPool(World par1, int par2, int par3, int par4) { return AxisAlignedBB.getBoundingBox((double)par2, (double)par3, (double)par4, (double)(par2 + 1), (double)((float)(par3 + 1) - 0.125F), (double)(par4 + 1)); //ici on dit que on peu se faire aspirer de 1 pixel par le bloc } et ensuite il suffis de mettre le saut : public void onEntityCollidedWithBlock(World par1, int par2, int par3, int par4, Entity par5) { par5.motionY += 2D; } Alors là on peu remarqué que le joueur saute que si on saute sur le bloc se que nous ne voulons pas alors nous alons rajouter cette ligne par5. par5.ticksExisted = 10; //tout les 10 ticks il saute maintenant ça saute tout le temps mais on perd des dégâts de chute donc on va éviter ça on ajoute : par5.fallDistance *= 0D; // on perd 0 dégats de chute en retombant sur le bloc maintenant si on veut rajouter un bruit de piston : par1.playSoundAtEntity(par5, "tile.piston.in", 1.0F, 1.0F); // bruit de piston joué a l'entity se trouvant a proximité a présent notre bloc est bon mais vous allez me dire comment on fais pour sortir du bloc sans perdre des dégats de chute c'est très simple nous alons entrer un "if" if(par5.onGround && par5.isSneaking()) // si le joueur sneak sur le sol alors { par5.motionY += 0; // fais sauter le joueur a 0 bloc de haut par5.fallDistance += 0D; // on perd 0 dégats de chute en retombant sur le bloc } else //sinon { par5.ticksExisted = 10; par5.motionY += 2D; fais sauter le joueur par1.playSoundAtEntity(par5, "tile.piston.in", 1.0F, 1.0F); // bruit de piston joué a l'entity se trouvant a proximité par5.fallDistance += 0D; // on perd 0 dégats de chute en retombant sur le bloc } se qui nous donne au final : package votre_package; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.client.Minecraft; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.MovementInput; import net.minecraft.world.World; public class BlockSauteur extends Block { public BlockSauteur() { super(Material.rock); this.setCreativeTab(CreativeTabs.tabBlock); } public AxisAlignedBB getCollisionBoundingBoxFromPool(World par1, int par2, int par3, int par4) { return AxisAlignedBB.getBoundingBox((double)par2, (double)par3, (double)par4, (double)(par2 + 1), (double)((float)(par3 + 1) - 0.125F), (double)(par4 + 1)); } public void onEntityCollidedWithBlock(World par1, int par2, int par3, int par4, Entity par5) { if(par5.isSneaking()) // si le joueur sneak alors { par5.motionY += 0; // fais sauter le joueur a 0 bloc de haut par5.fallDistance += 0D; // on perd 0 dégats de chute en retombant sur le bloc } else //sinon { par5.ticksExisted = 10; par5.motionY += 2D; fais sauter le joueur par1.playSoundAtEntity(par5, "tile.piston.in", 1.0F, 1.0F); // bruit de piston joué a l'entity se trouvant a proximité par5.fallDistance += 0D; // on perd 0 dégats de chute en retombant sur le bloc } } } 3]CraftBukkit pour craftbukkit je vous donne tout c'est la même chose Block.java REGISTRY.a(ID, "NOM_DU_BLOC", (new BlockSauteur()).c(1.0F).a(k).c("NOM_DU_BLOC").d("TEXTURE_DU_BLOC")); Blocks.java public static final Block NOM_DU_BLOC = (Block) Block.REGISTRY.a("NOM_DU_BLOC"); et enfin le BlockSauteur.java (1.7.2) package net.minecraft.server; import net.minecraft.server.AxisAlignedBB; import net.minecraft.server.Block; import net.minecraft.server.CreativeModeTab; import net.minecraft.server.Entity; import net.minecraft.server.Material; import net.minecraft.server.World; public class BlockSauteur extends Block { public BlockSauteur() { super(Material.STONE); this.a(CreativeModeTab.; } public AxisAlignedBB a(World world, int i, int j, int k) { return AxisAlignedBB.a().a((double) i, (double) j, (double) k, (double) (i + 1), (double) ((float) (j + 1) - (float) 0.125F), (double) (k + 1)); } public void a(World world, int i, int j, int k, Entity entity) { if(entity.isSneaking()) { entity.motY += 0D; // on fais sauter le joueur entity.fallDistance += 0D; // on perd 0 dégâts de chute } else { entity.motY += 2D; // on fais sauter le joueur entity.fallDistance += 0D; // on perd 0 dégâts de chute entity.ticksLived = 10; // on saute tout les 10 ticks } } } BlockSauteur.java (1.7.10) package net.minecraft.server; import net.minecraft.server.AxisAlignedBB; import net.minecraft.server.Block; import net.minecraft.server.CreativeModeTab; import net.minecraft.server.Entity; import net.minecraft.server.Material; import net.minecraft.server.World; public class BlockSauteur extends Block { public BlockSauteur() { super(Material.STONE); this.a(CreativeModeTab.; } public AxisAlignedBB a(World world, int i, int j, int k) { float f = 0.125F; return AxisAlignedBB.a((double) i, (double) j, (double) k, (double) (i + 1), (double) ((float) (j + 1) - f), (double) (k + 1)); } public void a(World world, int i, int j, int k, Entity entity) { if(entity.isSneaking()) { entity.motY += 0D; // on fais sauter le joueur entity.fallDistance += 0D; // on perd 0 dégâts de chute } else { entity.motY += 2D; // on fais sauter le joueur entity.fallDistance += 0D; // on perd 0 dégâts de chute entity.ticksLived = 10; // on saute tout les 10 ticks } } } Et voilà j'espère que ça vous a plus bon jeu avec votre nouveau bloc
  5. vous avez toujours eu envis d'un bâton/sceptre de soin ? et bien se tuto est fait pour vous Bâton/Sceptre de Soin -[iNTRODUCTION]- Bonjour à tous ! Dans ce tutoriel, nous allons faire un Bâton/Sceptre de soin -[sOMMAIRE]- 1]Création de l'item 2]Création du BatonDeSoin.java 3]CraftBukkit 1]Création de l'item la création d'un item c'est pas quelque chose de compliqué il suffis de faire comme ceci : Item.java itemRegistry.addObject(ID, "NOM", (new BatonDeSoin().setUnlocalizedName("NOM").setTextureName("NOM_TEXTURE"))); Items.java public static final Item NOM = (Item)Item.itemRegistry.getObject("NOM"); 2] Création du BatonDeSoin.java alors ici on va commencer par crée notre class normalement vous aurez ceci : package votre_package; public class BatonDeSoin { } alors tout de suite nous alons faire un extends sur Item et donc ajouter un maxStackSize une Durabilité et un emplacement dans le créatif : package votre_package; public class BatonDeSoin extends Item { public BatonDeSoin() { this.maxStackSize = 1; // on lui met un stack de 1 this.setMaxDamage(15); // on met 15 de durabilité this.setCreativeTab(CreativeTabs.tabCombat); // on le met dans le tab Combat du créatif } } une fois ça fais nous allons ajouter une fonction que quand on fais click droit ça fais une action : public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) { return par1ItemStack; } dans cette fonction nous alons ajouter un effect de potion qui est le heal et on va aussi déclarer la durabilité : public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) { par1ItemStack.damageItem(1, par3EntityPlayer); // on déclare la durabilité par3EntityPlayer.addPotionEffect(new PotionEffect(Potion.heal.id, 1, 0)); // on met un effet de heal 1 pendant 1 tick return par1ItemStack; } et puis on rajoute de la 3D : public boolean isFull3D() // on met de la 3D a l'item { return true; } ce qui nous donne au final : package votre_package; public class BatonDeSoin extends Item{ public BatonDeSoin() { this.maxStackSize = 1; this.setMaxDamage(10); this.setCreativeTab(CreativeTabs.tabCombat); } public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) { par1ItemStack.damageItem(1, par3EntityPlayer); par3EntityPlayer.addPotionEffect(new PotionEffect(Potion.heal.id, 1, 0)); return par1ItemStack; } } et voilà passons au craftbukkit qui est la même chose 3] CraftBukkit Item.java REGISTRY.a(ID, "NOM", (new BatonDeSoin()).c("NOM").f("NOM_TEXTURE")); Items.java (Pour 1.7.2) public static final Item NOM = (Item)Item.REGISTRY.a("NOM"); Items.java (Pour 1.7.10) public static final Item NOM = (Item)Item.REGISTRY.get("NOM"); BatonDeSoin.java package net.minecraft.server; import net.minecraft.server.EntityHuman; import net.minecraft.server.Item; import net.minecraft.server.ItemStack; import net.minecraft.server.MobEffect; import net.minecraft.server.MobEffectList; import net.minecraft.server.World; public class BatonDeSoin extends Item { public BatonDeSoin() { this.maxStackSize = 1; this.setMaxDurability(15); } public ItemStack a(ItemStack itemstack, World world, EntityHuman entityhuman) { entityhuman.addEffect(new MobEffect(MobEffectList.HEAL.id, 1, 0)); itemstack.damage(1, entityhuman); return itemstack; } } et voilà bon jeu avec votre bâton de soin
  6. Bonjour je vais mettre ce tutos en videos et en texte : VIDEO : https://www.youtube.com/watch?v=SizqLNqbpS0 TEXTE : PAS ENCORE DISPONIBLE
  7. 1.x

    Mettre une description sur un item Cette oeuvre est mise à disposition selon les termes de la Licence Creative Commons Attribution - Pas dUtilisation Commerciale - Pas de Modification 3.0 non transposé . Tout partage implique que vous citiez l'auteur original. -[iNTRODUCTION]- Salut tout le monde ! Dans ce tutoriel nous allons voir comment ajouter une description sur un item -[SOMMAIRE]- 1] Ajouter la description 2] Ajouter une touche pour voir la description 3] Mettre une description d'un item sans description 4] Bonus d'amélioration a] pouvoir changer la touche 1] Ajouter la description Pour ajouter une description sur un item rien de bien compliquer nous allons aller dans Item.java et chercher public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) {} Ensuite dans les accolade nous allons tout simplement ajouter un IF - ELSE avec une conditions qui va récupérer l'item en choisi comme ceci : public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) { if (par1ItemStack.getItem() == Items.diamond_sword) // on cherche l'item par3List.add("Description"); // on ajoute la description } Voici un screen : 2] Ajouter une touche pour voir la description Alors pour le moment nous avons ça : public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) { if (par1ItemStack.getItem() == Items.diamond_sword) // on cherche l'item par3List.add("Description"); // on ajoute la description } Mais nous velons que quand on appuis sur LSHIFT par exemple que ça affiche la description nous nous allons rajouter un autre IF une condition de KeyBinding comme ceci : public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) { if(Keyboard.isKeyDown(42)) { // si la touche LSHIFT est pressée alors ça execute if (par1ItemStack.getItem() == Items.diamond_sword) // on cherche l'item par3List.add("Description"); // on ajoute la description } else par3List.add("Appuyez sur LSHIFT pour voir la description"); // si la touche LSHIFT n'est pas pressée alors on affiche ceci } Donc la si on appuis pas ça affiche rien et si on appuis ça affiche la description sauf qu'il faut prévenir les personne d'appuyer sur LSHIFT donc nous allons tout simplement faire un ELSE qui va rajouter une description mais just pour nous prévenir comme ceci voila donc pour le moment nous avons ceci: un petit screen : 3] Mettre une description d'un item sans description Maintenant nous avons notre description quand on appuis sur LSHIFT mais tout les items on aussi la phrase "Appuyez sur LSHIFT pour voir la description" sauf que ensuite ça n'affiche rien donc nous allons rajouter une else après le if de l'item choisi comme cela : public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) { if(Keyboard.isKeyDown(42)) { // si la touche LSHIFT est pressée alors ça execute if (par1ItemStack.getItem() == Items.diamond_sword) // on cherche l'item par3List.add("Description"); // on ajoute la description else par3List.add("Aucune description pour cet item"); // on ajoute la description de tout les items non défini } else par3List.add("Appuyez sur LSHIFT pour voir la description"); // si la touche LSHIFT n'est pas pressée alors on affiche ceci } Et voila nous avons terminé le tutoriel pour ajouter une description à un item, 4] Bonus d'amélioration a] pourvoir changer la touche Alors pour changer la touche du keybinding il nous faut aller dans GameSettings.java et ajouter une variable d'un KeyBinding : public KeyBinding keyDescription; Ensuite dans le constructeur GameSettings nous allons ajouter : this.keyDescription = new KeyBinding("Description Item", 42, "key.categories.misc"); // this.keyDescription = new KeyBinding("NOM", touche par défaut, "catégorie"); Ensuite nous voyons this.keyBindings = (KeyBinding[])((KeyBinding[])ArrayUtils.addAll(new KeyBinding[] {this.keyBindAttack, this.keyBindUseItem, this.keyBindForward, this.keyBindLeft, this.keyBindBack, this.keyBindRight, this.keyBindJump, this.keyBindSneak, this.keyBindDrop, this.keyBindInventory, this.keyBindChat, this.keyBindPlayerList, this.keyBindPickBlock, this.keyBindCommand, this.keyBindScreenshot, this.keyBindTogglePerspective, this.keyBindSmoothCamera, this.keyBindSprint}, this.keyBindsHotbar)); avec tout les keybinding, donc nous on va rajouter le notre comme ceci : this.keyBindings = (KeyBinding[])((KeyBinding[])ArrayUtils.addAll(new KeyBinding[] {this.keyDescription/* <---- */, this.keyBindAttack, this.keyBindUseItem, this.keyBindForward, this.keyBindLeft, this.keyBindBack, this.keyBindRight, this.keyBindJump, this.keyBindSneak, this.keyBindDrop, this.keyBindInventory, this.keyBindChat, this.keyBindPlayerList, this.keyBindPickBlock, this.keyBindCommand, this.keyBindScreenshot, this.keyBindTogglePerspective, this.keyBindSmoothCamera, this.keyBindSprint}, this.keyBindsHotbar)); Ensuite on va chercher l'autre constructeur GameSettings et on peu remarquer que c'est exactement la même chose donc tout simplement vous faire parreil ! Voila vous avez crée votre keyBinding mais maintenant il faut l'ajouter a notre code donc on retourne dans Item.java et notre if(Keyboard.isKeyDown(42)) va se transformer en if(Keyboard.isKeyDown(Minecraft.getMinecraft().gameSettings.keyDescription.getKeyCode())) // on récupère la touche du keyBinding en int Petit screen : Mais maintenant il nous faut récupérer le nom de la touche pour que ça l'affiche en description au lieu de mettre un text simple. Donc on va remplacer ce code : par3List.add("Appuyez sur LSHIFT pour voir la description"); par ceci : par3List.add("Appuyez sur " + Minecraft.getMinecraft().gameSettings.getKeyDisplayString(Minecraft.getMinecraft().gameSettings.keyDescription.getKeyCode()) /* on récupère le nom de la touche */ + " pour voir la description"); Et voilà ! Vous avez un keybinding fontionnel et stylay ! si je change le touche en A par exemple voici ce que ça donne : Merci d'avoir lu ce tutoriel et on se retrouve plus tard ! :)
  8. 1.x

    Merci j'ai corrigé ^^ Il y a plus beaucoup de suggestions donc si vous avez des choses a proposer en tutoriel, je veux bien les executer :)
  9. 1.x

    pas besoin de le mettre coté serveur ^^ EDIT : j'ai modifier des choses :)
  10. 1.x

    oui je vois merci pour ta proposition
  11. et bien il faut apprendre les base du java , déjà il faut que tu mettent ça dans un JPanel et ensuite tu devrai trouver sur internet
  12. Hum je pense que personne va te repondre car ces sources sont extrement nul à chier, bourré de boucle infini qui bousille ton processeur, enfin bref passons des détaille. Ce que ne te conseil de faire c'est de suivre le tutoriel de TheShark34.
  13. Vanilla

    mais pourquoi faire un autre matérial ? on peu tout simplement utiliser le Material.anvil sur le client et le Material.HEAVY sous craftbukkit ça évite de faire du changement partout ^^
  14. Vanilla

    Ce tuto peut-être très utile je l'accorde !
  15. Un bouton en guise de commande Cette uvre est mise à disposition selon les termes de la Licence Creative Commons Attribution - Pas dUtilisation Commerciale - Pas de Modification 3.0 non transposé . Tout partage implique que vous citiez l'auteur original. -[iNTRODUCTION]- Bonjour a tous, dans ce tutoriel, je vais vous expliquer comment créer un bouton et lui lier une commande. -[sOMMAIRE]- 1] Création du bouton 2] Lier la commande au bouton 1]Ajout dubouton. Nous allons déclarer leboutondans la classe GuiInGameMenu. public void initGui() { //Du code this.buttonList.add(new GuiButton(id, posX, posY, nom)); //Du code } Passons aux explications : ID(int)correspond à l'id du bouton (doit être unique). posX(int)correspond à la position en pixel à partir du bord gauche de lécran. posY(int)correspond à la position en pixel à partir du bord haut de lécran. nom(String)correspond au nom affiché dans le bouton. 2]lier la commande aubouton. Toujours dans le même fichier. protected void actionPerformed([...]) { //Du code switch([...]) { //Des cases //On en ajoute une a la fin : case 8: //Si c'est le nouveau bouton qui est utilisé. { mc.thePlayer.sendChatMessage(message); //permet d'envoyer un message ou une commande dans le chat. mc.displayguiScreen(vue); //Permet de changer de vue. } } } Passons aux explications : message(String)correspond au message que vous souhaitez entrer dans le chat. vue(GuiScreen)correspond à la vue que vous voulez afficher, null revient dans le jeu. Vous pouvez bien entendu rajouter des conditions, notamment pour vérifier si le joueur est en multijoueur ou non. this.mc.isSingleplayer() { //Code si Solo mc.thePlayer.sendChatMessage(message); } else { //Code si Multi mc.thePlayer.sendChatMessage(message); } mc.displayguiScreen(vue); voila pour ce petit tuto, merci d'avoir tout lu
  16. Je suis désolé mais tout le monde dit : (wow c'est cher !) Mais allez voir d'autres dev qui font un travail plus merdique que nous et qui font payer le tout pour 200 et ca je peu vous dire qu'il y en a plein des gens qui vendent leur launcher minecraft 100% perso pour 75 à 100 . Je trouve ça un peu désolant de critiquer les gens comme ça les traiter comme des veilles chausettes alors que les autres ne font que copier le code des autres. Donc si vous êtes pas comptent evitez de partager vos humeurs sur le CV des gens pour les critiquer car vous vous croyez meilleur merci.
  17. Vanilla

    Oui avec livre c'est possible
  18. Vanilla

    je ne sais pas
  19. Vanilla

    oui il faut que tu mette ça tout en haut du guiingame protected static final ResourceLocation inventoryBackground = new ResourceLocation("textures/gui/container/inventory.png"); et le this.drawActivePotionEffects(); tu le met en dessus de ce if if (!this.mc.thePlayer.isPotionActive(Potion.confusion)) { float var6 = this.mc.thePlayer.prevTimeInPortal + (this.mc.thePlayer.timeInPortal - this.mc.thePlayer.prevTimeInPortal) * p_175180_1_; if (var6 > 0.0F) { this.func_180474_b(var6, var2); } }
  20. Vanilla

    alors pour le StatusEffectHUD tu va ajouter en dessus de cette fonction : public void func_175180_a(float p_175180_1_) { [...] } ceci : private void drawActivePotionEffects() { int var1 = 0; int var2 = 0; boolean var3 = true; Collection var4 = this.mc.thePlayer.getActivePotionEffects(); if (!var4.isEmpty()) { GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F); GlStateManager.disableLighting(); int var5 = 33; if (var4.size() > 5) { var5 = 132 / (var4.size() - 1); } for (Iterator var6 = this.mc.thePlayer.getActivePotionEffects().iterator(); var6.hasNext(); var2 += var5) { PotionEffect var7 = (PotionEffect)var6.next(); Potion var8 = Potion.potionTypes[var7.getPotionID()]; GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F); this.mc.getTextureManager().bindTexture(inventoryBackground); this.drawTexturedModalRect(var1, var2, 0, 166, 140, 32); if (var8.hasStatusIcon()) { int var9 = var8.getStatusIconIndex(); this.drawTexturedModalRect(var1 + 6, var2 + 7, 0 + var9 % 8 * 18, 198 + var9 / 8 * 18, 18, 18); } String var11 = I18n.format(var8.getName(), new Object[0]); if (var7.getAmplifier() == 1) { var11 = var11 + " " + I18n.format("enchantment.level.2", new Object[0]); } else if (var7.getAmplifier() == 2) { var11 = var11 + " " + I18n.format("enchantment.level.3", new Object[0]); } else if (var7.getAmplifier() == 3) { var11 = var11 + " " + I18n.format("enchantment.level.4", new Object[0]); } this.mc.fontRendererObj.func_175063_a(var11, (float)(var1 + 10 + 18), (float)(var2 + 6), 16777215); String var10 = Potion.getDurationString(var7); this.mc.fontRendererObj.func_175063_a(var10, (float)(var1 + 10 + 18), (float)(var2 + 6 + 10), 8355711); } } } et là ou tu avais mis ton code qui bugger tu met ça this.drawActivePotionEffects(); voilà bon jeu
  21. Vanilla

    je te fais ça en 1.8
  22. et le ArmorHUD ? et non je ne fais pas du hating
  23. Vanilla

    Teamspeak