Compteur kill
-
Ah ok j’avais mal compris. Dans ce cas faut mieux passer par l’event LivingDeathEvent.
-
@‘Plaigon’:
Ah ok j’avais mal compris. Dans ce cas faut mieux passer par l’event LivingDeathEvent.
public void onEntityLivingDeath(LivingDeathEvent event)
{if (event.source.getEntity() instanceof EntityPlayer)
{EntityPlayer player = (EntityPlayer) event.source.getEntity();
}
}@SideOnly(Side.CLIENT)
public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4)
{NBTTagCompound nbt = par1ItemStack.getTagCompound();
par3List.add(EnumChatFormatting.RED + “KARAMBIT DOPPLER” + EnumChatFormatting.WHITE + " | " + EnumChatFormatting.GOLD + “FACTORY NEW”);}
Voilà donc j’ai fait comme sa mais comment j’appelle ma fonction dans mon NBT
-
Mettre un compteur de kill dans un tag nbt d’un item me semble complètement inapproprié comme l’item n’est pas conservé à la mort.
Ça serait bien plus cohérent de mettre ça dans un EEP.
-
Non ce qu’il veut faire c’est conserver le nombre de morts effectués avec l’item en main. Moi non plus j’avais mal compris au début _
-
@‘Plaigon’:
Non ce qu’il veut faire c’est conserver le nombre de morts effectués avec l’item en main. Moi non plus j’avais mal compris au début _
Oui c’est exactement se que je veut faire du coup je doit faire comme j’avais commencé ou autrement
-
Fais bien attention à ne pas oublier le null check, une fois tu le mets, l’autre fois tu le mets pas.
Si le décompte se fait fonction de l’item autant en faire un nbt Tag.
Faut passer par un getter/setter je pense avec l’update de l’item, niveau event tu commençais bien me semble -
Dans ce cas, lors de la mort il faut parcourir tous les item de l’inventaire jusqu’à trouver l’item voulu pour incrémenter la valeur dans son tag nbt.
Rien de compliqué. -
C’est pourtant compliquer la chose puisqu’il est sensé l’avoir en main, donc suffit simplement de regarder si l’item en main lors de la mort est l’item voulu
-
J’ai essayé de faire sa mais je croie que je suis complètement a coté
package fr.darkvince.ultrav2.cassefauchon; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import java.util.List; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.enchantment.Enchantment; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.EnumAction; import net.minecraft.item.EnumRarity; 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.EnumChatFormatting; import net.minecraft.world.World; import net.minecraftforge.event.entity.living.LivingDeathEvent; public class Knife extends Item{ public Knife() { setMaxStackSize(1); } public void onUpdate(ItemStack stack, World world, Entity entity, int slot, boolean isCurrent) { if (stack.getTagCompound() == null) { stack.setTagCompound(new NBTTagCompound()); } if (stack.getTagCompound() .getInteger("Kills") >= 100) { ((EntityLivingBase) entity).addPotionEffect((new PotionEffect(Potion.nightVision.getId(), 20 * 15, 0))); } if(!stack.isItemEnchanted()) { stack.addEnchantment(Enchantment.sharpness, 20); stack.addEnchantment(Enchantment.looting, 3); } } @Override @SideOnly(Side.CLIENT) public EnumRarity getRarity(ItemStack itemstack) { return EnumRarity.epic; } @SideOnly(Side.CLIENT) public boolean isFull3D() { return true; } public EnumAction getItemUseAction(ItemStack p_77661_1_) { return EnumAction.block; } public ItemStack onItemRightClick(ItemStack stack, World p_77659_2_, EntityPlayer p_77659_3_) { p_77659_3_.setItemInUse(stack, getMaxItemUseDuration(stack)); stack.getTagCompound().setInteger("Kills", 1); return stack; } public void onEntityLivingDeath(LivingDeathEvent event) { if (event.source.getEntity() instanceof EntityPlayer) { EntityPlayer player = (EntityPlayer) event.source.getEntity(); } } @SideOnly(Side.CLIENT) public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) { par1ItemStack.getTagCompound().setString("Kills", "0"); // NBTTagCompound nbt = par1ItemStack.getTagCompound(); par3List.add(EnumChatFormatting.RED + "KARAMBIT DOPPLER" + EnumChatFormatting.WHITE + " | " + EnumChatFormatting.GOLD + "FACTORY NEW"); } } -
Sachant que ta fonction avec LivingDeathEvent n’a @EventSubscribe au dessus, qu’elle ne fait rien et qu’elle est mal placé, en effet ça ne risque pas de fonctionner.
-
Eh eh, ouais c’est pas trop ça mais l’envie est là ^^
Ce qui se passe niveau event doit être dans une autre classe. Commence à regarder les tutos et reviens avec ce qui te semble mieux à ce niveau là.
De plus, il ne se passe rien dans ton event, tu as l’instance du joueur ok, maintenant il te faut détecter l’item en main et agir sur l’integer à enregistrer dans les nbt
-
Merci mais les NBT est un peut trop compliqué pour moi j’ai essayé de les comprendre mais c’est pas trop sa pour l’event j’ai compris l’erreur plus cas comprendre les NBT
-
le tag nbt c’est un truc mal appréhendé mais dans les faits c’est simple.
Deux Fonctions dans la classe de ton item:
public void writeToNBT(NBTTagCompound nbt) { nbt.setInteger("integerExemple", 0); //Le 0 peut être tout autre nombre valable pour un integer, ce sera la valeur initiale du nbt nbt.setBoolean("booleanExemple", true); //true ou false, à toi de choisir } public void readFromNBT(NBTTagCompound nbt) { nbt.getInteger("integerExemple"); //rien de plus que le nom de ton nbt et son type nbt.getBoolean("booleanExemple"); }Après il faut pouvoir utiliser ça dans les autres méthodes il te faudra donc:
int integerExemple= stack.getTagCompound().getInteger("integerExemple"); boolean booleanExemple= stack.getTagCompound().getBoolean("booleanExemple");Je te montre une méthode par exemple où je me sers d’un boolean qui est enregistré et déclaré dans le write et le read
@Override public boolean onEntitySwing(EntityLivingBase entityLiving, ItemStack stack) { boolean leftClick = stack.getTagCompound().getBoolean("leftClick"); if(leftClick) stack.getTagCompound().setBoolean("leftClick", false); else stack.getTagCompound().setBoolean("leftClick", true); return true; }ça te permet de voir le setBoolean (setInteger si on parle d’un Integer évidemment)
Autre exemple d’un Integer qui me sert de timer
int timer = stack.getTagCompound().getInteger("timer"); if(timer > 0) { stack.getTagCompound().setInteger("timer", timer - 1); } // En n'oubliant pas de déclarer la variable dans les fonctions writeToNBT et readFromNBTCeci étant dis, passons à ton cas.
Tu veux enregistrer le nombre de kills fait avec un item donné.
D’abord la classe de l’item donc:public class ItemHache extends ItemSword { public ItemHache(ToolMaterial material) { super(material); } @Override public void onUpdate(ItemStack stack, World world, Entity entity, int i, boolean b) { if(!stack.hasTagCompound()) { stack.setTagCompound(new NBTTagCompound()); } } public void writeToNBT(NBTTagCompound nbt) { nbt.setInteger("frags", 0); } public void readFromNBT(NBTTagCompound nbt) { nbt.getInteger("frags"); } }Passons à la classe de l’event:
@SubscribeEvent public void onEntityKilled1(LivingDeathEvent event) { if(event.source.getEntity() instanceof EntityPlayer && event.source.getEntity() != null) { EntityPlayer player = (EntityPlayer)event.source.getEntity(); if(player.getHeldItem() != null && && player.getHeldItem().getItem() instanceof IciTonItem) // { ItemStack itemstack = Minecraft.getMinecraft().thePlayer.getCurrentEquippedItem(); //on récupère l'itemstack qui nécessairement est l'item voulu int frags = itemstack.getTagCompound().getInteger("frags"); //on récupère ton nbt itemstack.getTagCompound().setInteger("frags", frags + 1); //on ajoute 1 à la valeur de l'integer } } }Voilà ce code n’a pas été testé, je vais essayer, si il n’est pas bon je ferai mon possible et puis sinon les autres te diront bien où j’ai merdé.
Petit plus, toi qui veux afficher le nombre de kills (ce qui semble logique), je te conseille de passer par l’event onTooltip:@SubscribeEvent public void onTooltip(ItemTooltipEvent event) { if(event.itemStack.getItem() == IciTonItem && event.itemStack.getItemDamage() == 0) { if(!event.itemStack.hasTagCompound()) { event.itemStack.setTagCompound(new NBTTagCompound()); } int frags= event.itemStack.getTagCompound().getInteger("frags"); event.toolTip.add("Nombre de kills: " + frags); }edit: j’ai testé ce code est fonctionnel. Par contre n’oublie pas d’enregistrer tes classes event et par là j’entends regarde les tutos et le onTooltip est un event côté client
-
Merci beaucoup je commence a comprend les NBT.
Parcontre si je tu e des animaux mobs etc. Sa augmente le nombre kill
-
Pourtant tu as bien instancié EntityPlayer.
Vire && event.source.getEntity() != null peut-être je suis pas sur du tout par contre essaye .
@SubscribeEvent public void onEntityKilled1(LivingDeathEvent event) { if(event.source.getEntity() instanceof EntityPlayer) { EntityPlayer player = (EntityPlayer)event.source.getEntity(); if(player.getHeldItem() != null && player.getHeldItem().getItem() instanceof IciTonItem) // { ItemStack itemstack = Minecraft.getMinecraft().thePlayer.getCurrentEquippedItem(); //on récupère l'itemstack qui nécessairement est l'item voulu int frags = itemstack.getTagCompound().getInteger("frags"); //on récupère ton nbt itemstack.getTagCompound().setInteger("frags", frags + 1); //on ajoute 1 à la valeur de l'integer } } } -
@‘floriangabet’:
Pourtant tu as bien instancié EntityPlayer.
Vire && event.source.getEntity() != null peut-être je suis pas sur du tout par contre essaye .
@SubscribeEvent public void onEntityKilled1(LivingDeathEvent event) { if(event.source.getEntity() instanceof EntityPlayer) { EntityPlayer player = (EntityPlayer)event.source.getEntity(); if(player.getHeldItem() != null && player.getHeldItem().getItem() instanceof IciTonItem) // { ItemStack itemstack = Minecraft.getMinecraft().thePlayer.getCurrentEquippedItem(); //on récupère l'itemstack qui nécessairement est l'item voulu int frags = itemstack.getTagCompound().getInteger("frags"); //on récupère ton nbt itemstack.getTagCompound().setInteger("frags", frags + 1); //on ajoute 1 à la valeur de l'integer } } }Sa change rien
J’ai aussi test en multi sa crash j’ai fait comme sa
if(event.getSide().isClient()) { MinecraftForge.EVENT_BUS.register(new EventClient()); }package fr.darkvince.proxy; import org.lwjgl.input.Keyboard; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import fr.darkvince.ultrav2.Main; import net.minecraft.block.Block; import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.nbt.NBTTagCompound; import net.minecraftforge.event.entity.player.ItemTooltipEvent; public class EventClient { @SubscribeEvent public void onTooltip(ItemTooltipEvent event) { if(event.itemStack.getItem() == Main.EvisererVioletStatTrak && event.itemStack.getItemDamage() == 0) { if(!event.itemStack.hasTagCompound()) { event.itemStack.setTagCompound(new NBTTagCompound()); } int frags= event.itemStack.getTagCompound().getInteger("frags"); event.toolTip.add("Nombre de kills: " + frags); } if(event.itemStack.getItem() == Main.bayonnetfadeStatTrak && event.itemStack.getItemDamage() == 0) { if(!event.itemStack.hasTagCompound()) { event.itemStack.setTagCompound(new NBTTagCompound()); } int frags= event.itemStack.getTagCompound().getInteger("frags"); event.toolTip.add("Nombre de kills: " + frags); } if(event.itemStack.getItem() == Main.dopplerkarambitStatTrak && event.itemStack.getItemDamage() == 0) { if(!event.itemStack.hasTagCompound()) { event.itemStack.setTagCompound(new NBTTagCompound()); } int frags= event.itemStack.getTagCompound().getInteger("frags"); event.toolTip.add("Nombre de kills: " + frags); } else if(event.itemStack.getItem() == Item.getItemFromBlock(Main.Xray)) { if(Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)) { event.toolTip.add("Bloc permettant de voir sous les blocs"); event.toolTip.add("Résistance : Infini"); event.toolTip.add("Cassable: Pioche Xray"); } else { event.toolTip.add("Maintenir shift gauche pour plus d'information"); } } else if(event.itemStack.getItem() == Main.bayonnetfade) { if(Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)) { event.toolTip.add("Etat: Factory New"); event.toolTip.add("Valeur: 800 000 UC"); } else { event.toolTip.add("Voir la valeur sur le marché (Shift Gauche)"); } } } } -
Envoie le crash report voir.
Le if(event.getSide().isClient()) pour le register vire le.
Et il manque une partie de te classe d’event.Donne nous toute ta classe d’event.
-
@‘floriangabet’:
Envoie le crash report voir.
Le if(event.getSide().isClient()) pour le register vire le.
Et il manque une partie de te classe d’event.Donne nous toute ta classe d’event.
C’est ma class event complet sa
if(event.getSide().isClient())
j’ai mis sa car on ma dit de le mettre coter client sinon j’ai vu qu’on pouvais faire un SIDE.CLIENT–-- Minecraft Crash Report ---- // Oh - I know what I did wrong! Time: 28/11/16 17:56 Description: Exception in server tick loop java.lang.NoClassDefFoundError: net/minecraft/client/Minecraft at fr.darkvince.proxy.LivingEventCustom.onEntityKilled1(LivingEventCustom.java:84) at cpw.mods.fml.common.eventhandler.ASMEventHandler_47_LivingEventCustom_onEntityKilled1_LivingDeathEvent.invoke(.dynamic) at cpw.mods.fml.common.eventhandler.ASMEventHandler.invoke(ASMEventHandler.java:54) at cpw.mods.fml.common.eventhandler.EventBus.post(EventBus.java:140) at net.minecraftforge.common.ForgeHooks.onLivingDeath(ForgeHooks.java:314) at net.minecraft.entity.EntityLivingBase.func_70645_a(EntityLivingBase.java:1014) at net.minecraft.entity.EntityLivingBase.func_70097_a(EntityLivingBase.java:978) at net.minecraft.entity.monster.EntityMob.func_70097_a(EntityMob.java:71) at net.minecraft.entity.monster.EntityZombie.func_70097_a(EntityZombie.java:249) at net.minecraft.entity.player.EntityPlayer.func_71059_n(EntityPlayer.java:1399) at net.minecraft.network.NetHandlerPlayServer.func_147340_a(NetHandlerPlayServer.java:1611) at net.minecraft.network.play.client.C02PacketUseEntity.func_148833_a(SourceFile:55) at net.minecraft.network.play.client.C02PacketUseEntity.func_148833_a(SourceFile:10) at net.minecraft.network.NetworkManager.func_74428_b(NetworkManager.java:245) at net.minecraft.network.NetworkSystem.func_151269_c(NetworkSystem.java:181) at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:1023) at net.minecraft.server.dedicated.DedicatedServer.func_71190_q(DedicatedServer.java:432) at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:841) at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:693) at java.lang.Thread.run(Thread.java:745) Caused by: java.lang.ClassNotFoundException: net.minecraft.client.Minecraft at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:191) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 20 more Caused by: java.lang.RuntimeException: Attempted to load class bao for invalid side SERVER at cpw.mods.fml.common.asm.transformers.SideTransformer.transform(SideTransformer.java:51) at net.minecraft.launchwrapper.LaunchClassLoader.runTransformers(LaunchClassLoader.java:279) at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:176) ... 22 more A detailed walkthrough of the error, its code path and all known details is as follows: --------------------------------------------------------------------------------------- -- System Details -- Details: Minecraft Version: 1.7.10 Thermos Version: cyberdynecc:Thermos:1.7.10-1614.58 Plugins: X_Reporter, RemoveRecipes, WorldEdit, LVLUltra, NoCraft, Essentials, GroupManager, BanRecipe, Frame_Protector, QuickSign, Multiverse-Core, WorldGuard, ProtocolLib, EssentialsProtect, JustBlood, VoxelSniper, EssentialsChat, EssentialsAntiBuild, Vault, EssentialsSpawn, MassiveCore, ChestShop, AuthMe, MasterPromote, Factions, CombatTagPlus, MineWeb_BukkitBridge, SpawnShield Disabled Plugins: Operating System: Linux (amd64) version 3.5.0-47-generic Java Version: 1.8.0_60, Oracle Corporation Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation Memory: 189742640 bytes (180 MB) / 463564800 bytes (442 MB) up to 10416029696 bytes (9933 MB) JVM Flags: 23 total; -Xmx10000M -Xms256M -XX:MaxPermSize=256m -XX:PermSize=128m -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+UseNUMA -XX:+CMSParallelRemarkEnabled -XX:MaxGCPauseMillis=50 -XX:+UseAdaptiveGCBoundary -XX:-UseGCOverheadLimit -XX:+UseBiasedLocking -XX:SurvivorRatio=8 -XX:TargetSurvivorRatio=90 -XX:MaxTenuringThreshold=15 -XX:UseSSE=3 -XX:+UseLargePages -XX:+UseFastAccessorMethods -XX:+UseStringCache -XX:+UseCompressedOops -XX:+OptimizeStringConcat -XX:+AggressiveOpts AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used IntCache: cache: 15, tcache: 0, allocated: 13, tallocated: 95 FML: MCP v9.05 FML v7.10.99.99 Minecraft Forge 10.13.4.1614 16 mods loaded, 16 mods active States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored UCHIJAAAA mcp{9.05} [Minecraft Coder Pack] (minecraft.jar) UCHIJAAAA FML{7.10.99.99} [Forge Mod Loader] (Thermos-1.7.10-1558-server.jar) UCHIJAAAA Forge{10.13.4.1614} [Minecraft Forge] (Thermos-1.7.10-1558-server.jar) UCHIJAAAA kimagine{0.2} [KImagine] (minecraft.jar) UCHIJAAAA FLabsBF{4.3} [Better Furnaces] (Better-Furnaces-Mod-1.7.10.jar) UCHIJAAAA BiblioCraft{1.11.5} [BiblioCraft] (BiblioCraft[v1.11.5][MC1.7.10].jar) UCHIJAAAA dungeonpack{1.7.10-1.0} [Dungeon Pack] (dungeonpack-1.7.10-1.0.jar) UCHIJAAAA EasyCrafting{1.7.10-2.0.1.16} [Easy Crafting] (EasyCrafting-1.7.10-2.0.1.16.jar) UCHIJAAAA endercrop{1.7.10-1.1} [Ender Crop] (endercrop-1.7.10-1.2.jar) UCHIJAAAA etfuturum{1.4.3} [Et Futurum] (Et Futurum-1.4.3.jar) UCHIJAAAA IronChest{6.0.62.742} [Iron Chest] (ironchest-1.7.10-6.0.62.742-universal.jar) UCHIJAAAA ultrav2{1.0.0} [Ultrafight V2] (modid-1.0.jar) UCHIJAAAA ModCustomMenu{1.0} [ModCustomMenu] (modid-1.0.jar) UCHIJAAAA MoreBows2{1.0.1} [More Bows 2] (MoreBows2-1.0.1.jar) UCHIJAAAA potioncore{@VERSION@} [Potion Core] (Potion-Core-1.7.10.jar) UCHIJAAAA supercraftingframe{1.7.10.1} [Super Crafting Frame] (Super-Crafting-Frame-Mod-1.7.10.jar) Profiler Position: N/A (disabled) Vec3 Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used Player Count: 2 / 80; [EntityPlayerMP['darkvince_'/226, l='ttt', x=327,43, y=67,00, z=358,78](darkvince_ at 327.4334585482397,67.0,358.7839497965997), EntityPlayerMP['NeKz'/274, l='ttt', x=326,05, y=67,00, z=356,57](NeKz at 326.0524255966283,67.0,356.56621091475574)] Is Modded: Definitely; Server brand changed to 'thermos,cauldron,craftbukkit,mcpc,kcauldron,fml,forge' Type: Dedicated Server (map_server.txt) -
Oui tu as les @SideOnly(Side.CLIENT) c’est mieux.
Fin je préfères à toi de voir.Pour se qui est du crash c’est dans la classe LivingEventCustom visiblement .
Donne nous cette classe
-
package fr.darkvince.proxy; import java.util.Random; import com.ibm.icu.util.Calendar; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.common.gameevent.TickEvent; import fr.darkvince.ultrav2.Main; import fr.darkvince.ultrav2.casseKnife.EvisererVioletStatTrak; import fr.darkvince.ultrav2.casseKnife.bayonnetfadeStatTrak; import fr.darkvince.ultrav2.casseKnife.dopplerkarambitStatTrak; import fr.darkvince.ultrav2.cassefauchon.Knife; import net.minecraft.block.Block; import net.minecraft.client.Minecraft; import net.minecraft.entity.boss.EntityWither; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.monster.EntityCreeper; import net.minecraft.entity.monster.EntitySkeleton; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraftforge.event.entity.living.LivingDeathEvent; import net.minecraftforge.event.entity.living.LivingDropsEvent; import net.minecraftforge.event.entity.player.ItemTooltipEvent; import net.minecraftforge.event.world.BlockEvent.HarvestDropsEvent; public class LivingEventCustom { @SubscribeEvent public void onEntityKilled1(LivingDeathEvent event) { if(event.source.getEntity() instanceof EntityPlayer) { EntityPlayer player = (EntityPlayer)event.source.getEntity(); if(player.getHeldItem() != null && player.getHeldItem().getItem() instanceof EvisererVioletStatTrak) // { ItemStack itemstack = Minecraft.getMinecraft().thePlayer.getCurrentEquippedItem(); //on récupère l'itemstack qui nécessairement est l'item voulu int frags = itemstack.getTagCompound().getInteger("frags"); //on récupère ton nbt itemstack.getTagCompound().setInteger("frags", frags + 1); //on ajoute 1 à la valeur de l'integer } } if(event.source.getEntity() instanceof EntityPlayer) { EntityPlayer player = (EntityPlayer)event.source.getEntity(); if(player.getHeldItem() != null && player.getHeldItem().getItem() instanceof bayonnetfadeStatTrak) // { ItemStack itemstack = Minecraft.getMinecraft().thePlayer.getCurrentEquippedItem(); //on récupère l'itemstack qui nécessairement est l'item voulu int frags = itemstack.getTagCompound().getInteger("frags"); //on récupère ton nbt itemstack.getTagCompound().setInteger("frags", frags + 1); //on ajoute 1 à la valeur de l'integer } } if(event.source.getEntity() instanceof EntityPlayer) { EntityPlayer player = (EntityPlayer)event.source.getEntity(); if(player.getHeldItem() != null && player.getHeldItem().getItem() instanceof dopplerkarambitStatTrak) // { ItemStack itemstack = Minecraft.getMinecraft().thePlayer.getCurrentEquippedItem(); //on récupère l'itemstack qui nécessairement est l'item voulu int frags = itemstack.getTagCompound().getInteger("frags"); //on récupère ton nbt itemstack.getTagCompound().setInteger("frags", frags + 1); //on ajoute 1 à la valeur de l'integer } } } @SubscribeEvent public void onBlockDrop(HarvestDropsEvent event) { if(event.block == Blocks.glass) { event.drops.clear(); event.dropChance = (float) 0.1; event.drops.add(new ItemStack(Main.GemXray)); } } @SubscribeEvent public void onLivingDrops(LivingDropsEvent event) { if ((event.entity instanceof EntityWither)) { EntityItem newdrop = new EntityItem(event.entity.worldObj, event.entity.posX, event.entity.posY, event.entity.posZ, new ItemStack(Main.whiterDrop, 1)); event.drops.add(newdrop); } if(event.entity instanceof EntityCreeper) { for(int i = 0; i < event.drops.size(); i ++) { if(event.drops.get(i).getEntityItem().getItem() == Items.gunpowder && event.source.getDamageType().equals("anvil")) { EntityItem newdrop = new EntityItem(event.entity.worldObj, event.entity.posX, event.entity.posY, event.entity.posZ, new ItemStack(Main.poudredyna, 1)); event.drops.add(newdrop); } } } if ((event.entity instanceof EntitySkeleton)) { EntitySkeleton skeleton = (EntitySkeleton)event.entity; if (skeleton.getSkeletonType() == 1) { EntityItem i = new EntityItem(event.entity.worldObj, event.entity.posX, event.entity.posY, event.entity.posZ, new ItemStack(Items.skull, 1, 1)); event.drops.remove(i); } } } }