Le Surenchant



  • Bonjour j'aimerai savoir comment on peut mettre un eveil plus haut que prévu ex inutile : infinity 1 -> infinity 25

    ex utile : knockback 5 -> knockback 15

    merci

    :::

    package fr.monpetitflocon.fantasymod.common.items;
    
    import java.util.List;
    
    import fr.monpetitflocon.fantasymod.common.FantasyMod;
    
    import net.minecraft.command.IEntitySelector;
    import net.minecraft.creativetab.CreativeTabs;
    import net.minecraft.enchantment.Enchantment;
    import net.minecraft.entity.Entity;
    import net.minecraft.entity.EntityLivingBase;
    import net.minecraft.entity.monster.EntityMob;
    import net.minecraft.entity.passive.EntityAnimal;
    import net.minecraft.entity.player.EntityPlayer;
    import net.minecraft.item.Item;
    import net.minecraft.item.ItemStack;
    import net.minecraft.item.ItemSword;
    import net.minecraft.nbt.NBTTagCompound;
    import net.minecraft.potion.Potion;
    import net.minecraft.potion.PotionEffect;
    import net.minecraft.util.ChatComponentTranslation;
    import net.minecraft.world.World;
    
    public class ItemFantasySword extends ItemSword
    {
       public ItemFantasySword(ToolMaterial material)
       {
           super(material);
           this.setCreativeTab(FantasyMod.FantasyItemCreativeTabs);
       }
        public void getSubItems(Item item, CreativeTabs tab, List list)
           {
               ItemStack itemenchante = new ItemStack(FantasyMod.swordFantasy, 1, 0);
               itemenchante.addEnchantment(Enchantment.knockback, 15);
               itemenchante.addEnchantment(Enchantment.looting, 2);
               itemenchante.addEnchantment(Enchantment.baneOfArthropods, 2);
               itemenchante.addEnchantment(Enchantment.sharpness, 5);
               itemenchante.addEnchantment(Enchantment.smite, 4);
               list.add(itemenchante);
           }
       public boolean hasEffect(ItemStack par1ItemStack, int pass)
       {
           return true;
       }
    
       public boolean getIsRepairable(ItemStack input, ItemStack repair)
       {
           if(repair.getItem() == FantasyMod.fantasyIngot)
           {
               return true;
           }
           return false;
       }
    
       public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par2List, boolean par4)
       {
       par2List.add("\u00a74" + "Sneak + Right Click :");
       par2List.add("\u00a73" + "Burn Players");
       par2List.add("\u00a73" + "Burn Mobs");
       par2List.add("\u00a73" + "Burn Animals");
       par2List.add("\u00a74" + "Right Click to active Effects");
       par2List.add("\u00a74" + " ");
       }
    
       public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player)
       {
           player.addPotionEffect(new PotionEffect(Potion.moveSpeed.id, 210, 2));
           player.addPotionEffect(new PotionEffect(Potion.jump.id, 210, 1));
           if(player.isSneaking())
           {
               if(!stack.hasTagCompound())
               {
                   stack.setTagCompound(new NBTTagCompound());
               }
               byte mode = stack.getTagCompound().getByte("mode");
               mode++;
               if(mode == 3)
               {
                   mode = 0;
               }
               stack.getTagCompound().setByte("mode", mode);
               if(!world.isRemote)
               {
                   player.addChatMessage(new ChatComponentTranslation("sword.mode.message." + mode));
               }
           }
           else
           {
               super.onItemRightClick(stack, world, player);
           }
           return stack;
       }
    
       public boolean hitEntity(ItemStack stack, EntityLivingBase attackedLiving, EntityLivingBase attackerLiving)
       {
           if(!stack.hasTagCompound()) // Si le stack n'a pas de tag NBT
           {
               stack.setTagCompound(new NBTTagCompound()); // je lui en ajoute un, sinon il y a un risque de NullPointerException
           }
    
           IEntitySelector filter; // Je déclare un filter, il est null pour l'instant
           if(stack.getTagCompound().getByte("mode") == 0) // si le mode est 0
           {
               filter = new IEntitySelector()
               {
                   @Override
                   public boolean isEntityApplicable(Entity entity)
                   {
                       if(entity instanceof EntityPlayer) // mon sélecteur prend tout les joueurs
                       {
                           return true;
                       }
                       return false;
                   }
               };
           }
           else if(stack.getTagCompound().getByte("mode") == 1) // si le mode est 1
           {
               filter = new IEntitySelector()
               {
                   @Override
                   public boolean isEntityApplicable(Entity entity)
                   {
                       if(entity instanceof EntityMob)// mon sélecteur prend tout les monstres
                       {
                           return true;
                       }
                       return false;
                   }
               };
           }
           else
           // sinon, le mode est forcement 3 (pas de else if ici, sinon la JVM va croire que filter peut être null, est donc vous allez avoir une erreur plus bas
           {
               filter = new IEntitySelector()
               {
                   @Override
                   public boolean isEntityApplicable(Entity entity)
                   {
                       if(entity instanceof EntityAnimal) // mon sélecteur prend tout les animaux
                       {
                           return true;
                       }
                       return false;
                   }
               };
           }
           List entityTargetList = attackedLiving.worldObj.selectEntitiesWithinAABB(EntityLivingBase.class, attackedLiving.boundingBox.expand(8.0D, 2.0D, 8.0D), filter); // j'obtiens la liste de toute les entités vivantes sur un rayon de 8 en fonction du filtre
           for(Object entity : entityTargetList)
           {
               EntityLivingBase living = (EntityLivingBase)entity; // Il faut donc cast EntityLivingBase à l'objet pour utiliser les méthodes qui sont dans EntityLivingBase
               if(!living.equals(attackerLiving)) // Vérifie que l'entité n'est pas celui qui a donné le coup
               {
                   living.setFire(7); // Mets feu à l'entité pendant 7 secondes
               }
           }
           return super.hitEntity(stack, attackedLiving, attackerLiving); // Execute le code dans la fonction hitEntity de la classe mère (endommage l'épée)
    
       }
    
    }
    

    :::

    :::

    package fr.monpetitflocon.fantasymod.common;
    
    import cpw.mods.fml.common.FMLCommonHandler;
    import cpw.mods.fml.common.Mod;
    import cpw.mods.fml.common.Mod.EventHandler;
    import cpw.mods.fml.common.Mod.Instance;
    import cpw.mods.fml.common.SidedProxy;
    import cpw.mods.fml.common.event.FMLInitializationEvent;
    import cpw.mods.fml.common.event.FMLPostInitializationEvent;
    import cpw.mods.fml.common.event.FMLPreInitializationEvent;
    import cpw.mods.fml.common.registry.GameRegistry;
    import fr.monpetitflocon.fantasymod.common.blocks.fantasyOre;
    import fr.monpetitflocon.fantasymod.common.items.FufuAple;
    import fr.monpetitflocon.fantasymod.common.items.HautEpee;
    import fr.monpetitflocon.fantasymod.common.items.ItemFantasyArmor;
    import fr.monpetitflocon.fantasymod.common.items.ItemFantasyAxe;
    import fr.monpetitflocon.fantasymod.common.items.ItemFantasyHoe;
    import fr.monpetitflocon.fantasymod.common.items.ItemFantasyPickaxe;
    import fr.monpetitflocon.fantasymod.common.items.ItemFantasyShovel;
    import fr.monpetitflocon.fantasymod.common.items.ItemFantasySword;
    import fr.monpetitflocon.fantasymod.common.items.MancheEpee;
    import fr.monpetitflocon.fantasymod.common.items.MilieuEpee;
    import fr.monpetitflocon.fantasymod.common.items.fantasyIngot;
    import fr.monpetitflocon.fantasymod.proxy.CommonProxy;
    import net.minecraft.block.Block;
    import net.minecraft.block.material.Material;
    import net.minecraft.creativetab.CreativeTabs;
    import net.minecraft.enchantment.Enchantment;
    import net.minecraft.item.Item;
    import net.minecraft.item.Item.ToolMaterial;
    import net.minecraft.item.ItemArmor.ArmorMaterial;
    import net.minecraft.item.ItemStack;
    import net.minecraftforge.common.MinecraftForge;
    import net.minecraftforge.common.util.EnumHelper;
    
    @Mod(modid = "fantasymod", name = "Fantasy Mod", version = "2.0.0")
    
    public class FantasyMod
    {
       public static final String MODID = "fantasymod";
       @Instance("fantasymod")
       public static FantasyMod instance;
    
       @SidedProxy(clientSide = "fr.monpetitflocon.fantasymod.proxy.ClientProxy", serverSide = "fr.monpetitflocon.fantasymod.proxy.CommonProxy")
       public static CommonProxy proxy;
    
       public static Item fantasyIngot, fufuaple, helmetFantasy, chestPlateFantasy, leggingsFantasy, bootsFantasy, swordFantasy, pickaxeFantasy, axeFantasy, shovelFantasy, hoeFantasy, MancheEpee, MilieuEpee, HautEpee;
       public static Block blockOre;
    
       public static ArmorMaterial armorFantasy = EnumHelper.addArmorMaterial("armorFantasy", 45, new int[] {4, 9, 7, 4}, 30);
       public static ToolMaterial toolFantasy = EnumHelper.addToolMaterial("toolFantasy", 3, 1000, 12.0F, 4.0F, 20);
       public static ToolMaterial toolsword = EnumHelper.addToolMaterial("toolFantasy", 3, 1000, 12.0F, 14.0F, 20);
       public static CreativeTabs FantasyItemCreativeTabs = new FantasyItemCreativeTabs("fantasy_item_creative_tabs");
    
       WorldGeneration worldgeneration = new WorldGeneration();
    
       @EventHandler
       public void preInit(FMLPreInitializationEvent event)
       {
           fantasyIngot = new fantasyIngot().setUnlocalizedName("fantasyIngot").setTextureName(MODID + ":Item_fantasyIngot");
           fufuaple = new FufuAple(5, 1.5F, false).setAlwaysEdible().setUnlocalizedName("fufuaple").setTextureName(MODID + ":Item_fufuaple");
           helmetFantasy = new ItemFantasyArmor(armorFantasy, 0).setUnlocalizedName("helmetFantasy").setTextureName(MODID + ":helmet_fantasy");
           chestPlateFantasy = new ItemFantasyArmor(armorFantasy, 1).setUnlocalizedName("chestPlateFantasy").setTextureName(MODID + ":chestplate_fantasy");
           leggingsFantasy = new ItemFantasyArmor(armorFantasy, 2).setUnlocalizedName("leggingsFantasy").setTextureName(MODID + ":leggings_fantasy");
           bootsFantasy = new ItemFantasyArmor(armorFantasy, 3).setUnlocalizedName("bootsFantasy").setTextureName(MODID + ":boots_fantasy");
           swordFantasy = new ItemFantasySword(toolsword).setUnlocalizedName("swordFantasy").setTextureName(MODID + ":sword_fantasy");
           pickaxeFantasy = new ItemFantasyPickaxe(toolFantasy).setUnlocalizedName("pickaxeFantasy").setTextureName(MODID + ":pickaxe_fantasy");
           axeFantasy = new ItemFantasyAxe(toolFantasy).setUnlocalizedName("axeFantasy").setTextureName(MODID + ":axe_fantasy");
           shovelFantasy = new ItemFantasyShovel(toolFantasy).setUnlocalizedName("shovelFantasy").setTextureName(MODID + ":shovel_fantasy");
           hoeFantasy = new ItemFantasyHoe(toolFantasy).setUnlocalizedName("hoeFantasy").setTextureName(MODID + ":hoe_fantasy");
           MancheEpee = new MancheEpee().setUnlocalizedName("MancheEpee").setTextureName(MODID + ":manche_epee");
           MilieuEpee = new MilieuEpee().setUnlocalizedName("MilieuEpee").setTextureName(MODID + ":milieu_epee");
           HautEpee = new HautEpee().setUnlocalizedName("HautEpee").setTextureName(MODID + ":haut_epee");
    
           blockOre = new fantasyOre(Material.rock).setHardness(15.0F).setResistance(10.0F).setBlockName("FantasyOre").setBlockTextureName(MODID + ":fantasy_ore");
    
           GameRegistry.registerItem(fantasyIngot, "Item_fantasyIngot");
           GameRegistry.registerItem(fufuaple, "item_fufuaple");
           GameRegistry.registerItem(helmetFantasy, "item_fantasy_helmet");
           GameRegistry.registerItem(chestPlateFantasy, "item_fantasy_chestplate");
           GameRegistry.registerItem(leggingsFantasy, "item_fantasy_leggings");
           GameRegistry.registerItem(bootsFantasy, "item_fantasy_boots");
           GameRegistry.registerItem(swordFantasy, "item_fantasy_sword");
           GameRegistry.registerItem(pickaxeFantasy, "item_fantasy_pickaxe");
           GameRegistry.registerItem(axeFantasy, "item_fantasy_axe");
           GameRegistry.registerItem(shovelFantasy, "item_fantasy_shovel");
           GameRegistry.registerItem(hoeFantasy, "item_fantasy_hoe");
           GameRegistry.registerItem(MancheEpee, "manche_epee");
           GameRegistry.registerItem(MilieuEpee, "milieu_epee");
           GameRegistry.registerItem(HautEpee, "haut_epee");
    
           GameRegistry.registerBlock(blockOre, "fantasy_ore");
    
           GameRegistry.registerWorldGenerator(worldgeneration, 0);
    
       }
    
       @EventHandler
       public void init(FMLInitializationEvent event)
       {
           MinecraftForge.EVENT_BUS.register(new LivingEventHandler());
           FMLCommonHandler.instance().bus().register(new PlayerEventHandler());
           MinecraftForge.EVENT_BUS.register(new PlayerEventHandler());
    ItemStack itemenchante = new ItemStack(swordFantasy, 1, 0);
    itemenchante.addEnchantment(Enchantment.knockback, 15);
    itemenchante.addEnchantment(Enchantment.looting, 2);
    itemenchante.addEnchantment(Enchantment.baneOfArthropods, 2);
    itemenchante.addEnchantment(Enchantment.sharpness, 5);
    itemenchante.addEnchantment(Enchantment.smite, 4);
       }
    
       @EventHandler
       public void postInit(FMLPostInitializationEvent event)
       {
    
       }
    }
    
    

    :::



  • Je crois qu'il n'y a pas de limite sur les niveaux d'enchantement
    Après, je ne code qu'en 1.8, j'ai aucune expérience en 1.7 ( Enfin, un peu, quand j'aide les gens qui sont en 1.7, je vais aps donner des codes en 1.8 )
    Peut-etre qu'en 1.7, il y a des limitations, mais s'il y en a, je ne sais pas comment les dépasser, essayais de feinter le système en mettant 5 + 5 + 5 etc ( Je garanti rien dou tou )



  • ok merci je vais voir mais je sais que le knockback de mon epee est 5 quand je passe ma souris dessus meme si c'est 15 je vais essayer et je vais me renseigner sur la 1.8 voir si set plus imple et plus de possibilite que la 1.7
    sachant que si je fait en 1.8 je garde quand meme la 1.7



  • Le niveau des enchantements est enregistré en unsigned byte, donc tu peux aller jusqu'à 255 il me semble. Par contre j'ai pas du tout compris l'histoire d'"éveil", tu veux faire quoi vraiment ? Mettre un enchantement par défaut sur l'Item ?



  • en gros mettre par exemple wither 20 sur une épée (exemple) car le max est wither 4 je crois ah et l'eveil je me suis fail jai du penser a autrechose en meme temps (mmorpg) je men suis meme pas rendu compte xd


  • Administrateurs

    Tu confonds enchantement et effet de potion.



  • ah et sur une epee on fait comment pour mettre un knockback 50 (je sais mais je fais expres non genre 17) ?a la place de 5 car sa me bloque a 5


  • Administrateurs

    Aucune idée, faudrait regarder le code du mod NEI.



  • merci et je sais que dans nei sa va jusqua 10 je regarderai si j'ai le temps et si je trouve ou c'est apre car le mod nei est complexe



  • Par commande c'est /give player minecraft:diamond_sword 1 0 {ench:[{id:tonId,lvl:50}]} tonId correspond à l'ID de l'enchant, donc les enchants peuvent être mis sur un Item depuis les NBT. Il me semble que les enchants sont chargés avec une HashMap avec comme clé l'id de l'enchant et en valeur le niveau de l'enchant. Regarde la table d'enchant pour voir comment c'est géré.



  • ok merci j'irai voir et je connaissais deja le /give avec les effet il peuvent aller jusqua 16900 je crois



  • Tu parles des potions là, pas des effets ni des enchant. Les metadatas de potions sont très grands car ils stockent les effets avec des calculs binaires



  • @'Eryah':

    Je crois qu'il n'y a pas de limite sur les niveaux d'enchantement
    Après, je ne code qu'en 1.8, j'ai aucune expérience en 1.7 ( Enfin, un peu, quand j'aide les gens qui sont en 1.7, je vais aps donner des codes en 1.8 )
    Peut-etre qu'en 1.7, il y a des limitations, mais s'il y en a, je ne sais pas comment les dépasser, essayais de feinter le système en mettant 5 + 5 + 5 etc ( Je garanti rien dou tou )

    sa a l'air de bien marhcer je tst directement avec le chiffre (sa marche en mod .jar mais pas en test c'est chelou mais sa marche)



  • Quel est le problème dans l'environnement de dev ?


Log in to reply