Résolu Compteur kill
-
@‘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); } } } }
-
Tien ton event devrait être comme ça:
@SubscribeEvent public void onEntityKilled1(LivingDeathEvent event) { EntityPlayer player = (EntityPlayer)event.source.getEntity(); if(player instanceof EntityPlayer) { if(player.getHeldItem() != null) { if(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 } else 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 } else 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 } } } }
La ligne 84 de cette classe correspond à quoi? (LivingEventCustom)
-
ItemStack itemstack = Minecraft.getMinecraft().thePlayer.getCurrentEquippedItem();
-
Remplaces tous les Minecraft.getMinecraft().thePlayer par player.
Il serait vraiment temps d’arrêter d’utiliser Minecraft.getMinecraft() côté serveur –’
C’est pourtant pas compliquer à comprendre, Minecraft.java = client only = crash côté serveur. -
Ma faute ^^
Par contre il ne me semble pas qu’il y ait besoin de répéter les if, il suffit de mettre les conditions ensemble
if(player.getHeldItem() != null && (player.getHeldItem().getItem() instanceof Item1|| player.getHeldItem().getItem() instanceof Item2|| player.getHeldItem().getItem() instanceof Item3|| player.getHeldItem().getItem() instanceof Item4|| player.getHeldItem().getItem() instanceof Item5|| player.getHeldItem().getItem() instanceof Item6)) { ItemStack itemstack = player.getCurrentEquippedItem(); int frags = itemstack.getTagCompound().getInteger("frags"); itemstack.getTagCompound().setInteger("frags", frags + 1); }
-
@‘Toutoune1008’:
Ma faute ^^
Par contre il ne me semble pas qu’il y ait besoin de répéter les if, il suffit de mettre les conditions ensemble
if(player.getHeldItem() != null && (player.getHeldItem().getItem() instanceof Item1|| player.getHeldItem().getItem() instanceof Item2|| player.getHeldItem().getItem() instanceof Item3|| player.getHeldItem().getItem() instanceof Item4|| player.getHeldItem().getItem() instanceof Item5|| player.getHeldItem().getItem() instanceof Item6)) { ItemStack itemstack = player.getCurrentEquippedItem(); int frags = itemstack.getTagCompound().getInteger("frags"); itemstack.getTagCompound().setInteger("frags", frags + 1); }
Ah oui exact aussi j’avais pas pensé.
-
Ou alors créer une interface que tu implémentes aux armes auxquelles tu veux un compteur de kill et faire :
if(player.getHeldItem() instanceof TonInterface) { }
Ou encore créer une classe mère pour toutes tes armes et faire
if(player.getHeldItem() instanceof TaClasseMere) { }
-
Je ne sais pas pour lui mais moi j’apprécie ce conseil qui me recadre en le prenant à mon compte.
-
Merci pour votre aide je vais le modifier pour faire plus propre
Envoyé de mon SM-G928F en utilisant Tapatalk