Code qui fonctionne plus



  • Bonjour,

    Comme dans le titre j'ai un probleme mon code fonctionné y a pas très longtemps est du jours au l'endemain il fonctionne plus

    package fr.darkvince.ultrav2;
    
    import net.minecraft.entity.player.EntityPlayer;
    
    import net.minecraft.entity.player.InventoryPlayer;
    
    import net.minecraft.init.Items;
    
    import net.minecraft.item.ItemStack;
    
    import net.minecraft.stats.StatList;
    
    import net.minecraft.util.MathHelper;
    
    import net.minecraftforge.event.entity.EntityJoinWorldEvent;
    
    import net.minecraftforge.event.entity.living.LivingDeathEvent;
    
    import cpw.mods.fml.common.eventhandler.SubscribeEvent;
    
    public class PlayerEventHandler
    
    {
    
    @SubscribeEvent
    
    public void onLivingDeath(LivingDeathEvent event)
    
    {
    
    if(event.entity instanceof EntityPlayer)
    
    {
    
    EntityPlayer player = (EntityPlayer)event.entity;
    
    if(player.inventory.hasItem(Main.bayonnetfadeuse) && player.inventory.hasItem(Main.bayonnetfade)  && player.inventory.hasItem(Main.bayonnetfadetest) && player.inventory.hasItem(Main.dopplerkarambitmauvais ) && player.inventory.hasItem(Main.dopplerkarambitusee) && player.inventory.hasItem(Main.dopplerkarambit)  && player.inventory.hasItem(Main.dopplerkarambittest) && player.inventory.hasItem(Main.dopplerkarambitmauvais ) && player.inventory.hasItem(Main.bayonnetfadeStatTrak) && player.inventory.hasItem(Main.dopplerkarambitStatTrak) && player.inventory.hasItem(Main.EvisererVioletStatTrak))
    
    {
    
    this.dropInventory(player.inventory);
    
    player.worldObj.getGameRules().setOrCreateGameRule("keepInventory", "true");
    
    }
    
    }
    
    }
    
    @SubscribeEvent
    
    public void onEntityJointWorld(EntityJoinWorldEvent event)
    
    {
    
    if(event.entity instanceof EntityPlayer)
    
    {
    
    event.world.getGameRules().setOrCreateGameRule("keepInventory", "false");
    
    }
    
    }
    
    private void dropInventory(InventoryPlayer inventory)
    
    {
    
    int i;
    
    for(i = 0; i < inventory.mainInventory.length; ++i)
    
    {
    
    if(inventory.mainInventory* != null)
    
    {
    
    if(inventory.mainInventory*.getItem() != Main.bayonnetfadeStatTrak && inventory.mainInventory*.getItem() != Main.dopplerkarambitStatTrak && inventory.mainInventory*.getItem() != Main.EvisererVioletStatTrak && inventory.mainInventory*.getItem() != Main.bayonnetfade && inventory.mainInventory*.getItem() != Main.bayonnetfadeuse && inventory.mainInventory*.getItem() != Main.bayonnetfadetest && inventory.mainInventory*.getItem() != Main.dopplerkarambitmauvais && inventory.mainInventory*.getItem() != Main.dopplerkarambit && inventory.mainInventory*.getItem() != Main.dopplerkarambitusee && inventory.mainInventory*.getItem() != Main.dopplerkarambittest && inventory.mainInventory*.getItem() != Main.dopplerkarambitmauvais)
    
    {
    
    inventory.player.func_146097_a(inventory.mainInventory*, true, false);
    
    inventory.mainInventory* = null;
    
    }
    
    }
    
    }
    
    for(i = 0; i < inventory.armorInventory.length; ++i)
    
    {
    
    if(inventory.armorInventory* != null)
    
    {
    
    inventory.player.func_146097_a(inventory.armorInventory*, true, false);
    
    inventory.armorInventory* = null;
    
    }
    
    }
    
    }
    
    }
    

  • Administrateurs

    Salut,
    Je te conseil de refaire ton copier/coller, car là c'est juste illisible.

    Et ça serait bien de détailler un peu plus, par exemple expliquer quel est le comportement attendu et ce que tu as actuellement.



  • En gros quand je meurt Il ne doit pas perdre tous les items que j'ai mis

    Parcontre le code java quand je le mais sa enleve les espaces

    Car normalment le code est comme sa

    http://prntscr.com/df9z1i


  • Administrateurs

    Pas normal que l'indentation saute.
    Veries que ta classe d'event est bien enregistrée.



  • Je pence que le problème, si ce n'est pas que la class est mal enregistrée, c'est ta longue condition dans "onLivingDeath". ça me parait plus logique de remplacer les " && " par des " || " car avec ton code, il faut avoir tous les items que tu as mis, dans l'inventaire pour pouvoir les garder.



  • MinecraftForge.EVENT_BUS.register(new PlayerEventHandler());

    Bien enregistré

    et remplacent sa change rien

    Edit:

    J'ai modifié avec un code pas très jolie mais sa fonctionne

    package fr.darkvince.ultrav2;
    
    import net.minecraft.entity.player.EntityPlayer;
    import net.minecraft.entity.player.InventoryPlayer;
    import net.minecraft.init.Items;
    import net.minecraft.item.ItemStack;
    import net.minecraft.stats.StatList;
    import net.minecraft.util.MathHelper;
    import net.minecraftforge.event.entity.EntityJoinWorldEvent;
    import net.minecraftforge.event.entity.living.LivingDeathEvent;
    import cpw.mods.fml.common.eventhandler.SubscribeEvent;
    
    public class PlayerEventHandler
    {
    @SubscribeEvent
    public void onLivingDeath(LivingDeathEvent event)
    {
    if(event.entity instanceof EntityPlayer)
    {
    EntityPlayer player = (EntityPlayer)event.entity;
    if(player.inventory.hasItem(Main.EvisererVioletStatTrak) || player.inventory.hasItem(Main.dopplerkarambit) || player.inventory.hasItem(Main.dopplerkarambitmauvais) || player.inventory.hasItem(Main.dopplerkarambitStatTrak) || player.inventory.hasItem(Main.dopplerkarambittest) || player.inventory.hasItem(Main.dopplerkarambitusee) || player.inventory.hasItem(Main.bayonnetfade) || player.inventory.hasItem(Main.bayonnetfademauvais))
    {
    this.dropInventory(player.inventory);
    player.worldObj.getGameRules().setOrCreateGameRule("keepInventory", "true");
    }
    }
    }
    
    @SubscribeEvent
    public void onEntityJointWorld(EntityJoinWorldEvent event)
    {
    if(event.entity instanceof EntityPlayer)
    {
    event.world.getGameRules().setOrCreateGameRule("keepInventory", "false");
    }
    }
    
    private void dropInventory(InventoryPlayer inventory)
    {
    int i;
    
    for(i = 0; i < inventory.mainInventory.length; ++i)
    {
    if(inventory.mainInventory* != null)
    {
    if(inventory.mainInventory*.getItem() != Main.EvisererVioletStatTrak)
    if(inventory.mainInventory*.getItem() != Main.dopplerkarambit)
    if(inventory.mainInventory*.getItem() != Main.dopplerkarambitmauvais)
    if(inventory.mainInventory*.getItem() != Main.dopplerkarambitStatTrak)
    if(inventory.mainInventory*.getItem() != Main.dopplerkarambittest)
    if(inventory.mainInventory*.getItem() != Main.dopplerkarambitusee)
    if(inventory.mainInventory*.getItem() != Main.bayonnetfade)
    if(inventory.mainInventory*.getItem() != Main.bayonnetfademauvais)
    if(inventory.mainInventory*.getItem() != Main.bayonnetfadeStatTrak)
    if(inventory.mainInventory*.getItem() != Main.bayonnetfadetest)
    if(inventory.mainInventory*.getItem() != Main.bayonnetfadeuse)
    {
    inventory.player.func_146097_a(inventory.mainInventory*, true, false);
    inventory.mainInventory* = null;
    }
    }
    }
    
    for(i = 0; i < inventory.armorInventory.length; ++i)
    {
    if(inventory.armorInventory* != null)
    {
    inventory.player.func_146097_a(inventory.armorInventory*, true, false);
    inventory.armorInventory* = null;
    }
    }
    }
    }
    


  • Balise Résolu ?

    PS : pour avoir un code plus propre, dans la fonction onLivingDeath tu peux par exemple, pour avoir des "inventory" au lieu des "player.inventory" faire une variable InventoryPlayer inventory = player.inventory.