2 mars 2014, 00:03

Après quelques tests, dans ta classe principale, dans la fonction init mets ça :

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

Et dans la classe PlayerEventHandler :

package fr.minecraftforgefrance.tutoriel.common;

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(ModTutoriel.itemTutoriel))
{
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() != ModTutoriel.itemTutoriel)
{
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;
}
}
}
}

Tu as juste à remplacer ModTutoriel.itemTutoriel par TaClassePrincipale.tonItem
Si c’est un bloc, utilise Item.getItemFromBlock(TaClassePrincipale.tonBloc)

J’ai pas trouvé de solution sans passer par le gameRule keepInventory, de toute façon elle n’est que actif lors du la mort du joueur et est remit à false lorsque le joueur revient dans le monde.