Bonjour bonjour,
Aujourd’hui j’ai un petit problème, je vous explique. J’étais tranquillement en train de créer une magnifique jardinière, tous fonctionnes à la perfection, les fleurs sont belles, la jardinière de même et les oiseaux chante et cetera…
Quand soudain ! Je lance mon serveur Minecraft, je m’apprête à jouer avec ma copine et pose ma première jardinière, ma fleure s’enlève bien de mon inventaire je la vois bien à l’intérieur mais malheureusement ma copine pas, il me suffit de faire un clique droit sur la jardinière pour comprendre la supercherie, ma fleure était revenue dans mon inventaire et la jardinière était en réalité restée vide ! Pa pa pammm ! Bon trêve de bavarderie passont au rome, bavar au rome. J’ai, dans un premier temps, pensais à une mauvaise synchronisation côté client / serveur j’ai donc essayé à coup de :
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumFacing side, float hitX, float hitY, float hitZ)
{
if(world.isRemote)
{
return false;
}
}
Sans succès et même pire, ça bugais encore plus :C Mais au final je me suis rendue compte que ça ne pouvais pas être un problème de synchro étant donné que j’avais déjà créais un buisson qui lui aussi se remplaçais lors d’un clique droit et donc je m’en remet à vous, voilà ma fonction complète :
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumFacing side, float hitX, float hitY, float hitZ)
{
ItemStack itemstack = player.inventory.getCurrentItem();
if(world.isRemote)
{
return false;
}
if(world.getBlockState(pos).getBlock() == EmotionBlocks.windowBox && itemstack != null)
{
Comparable current = state.getValue(FACING);
int size = player.getCurrentEquippedItem().stackSize;
if(player.getCurrentEquippedItem().getIsItemStackEqual(new ItemStack(Item.getItemFromBlock(EmotionBlocks.baseFlower), size, 5)))
{
world.setBlockState(pos, EmotionBlocks.windowBoxCentus.getDefaultState().withProperty(FACING, current));
if(!player.capabilities.isCreativeMode && –itemstack.stackSize <= 0)
{
player.inventory.setInventorySlotContents(player.inventory.currentItem, (ItemStack)null);
}
}
return true;
}
return false;
}
Ah une dernière chose comme vous le constatez pas grand chose ne change par rapport à mon buisson :
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer playerIn, EnumFacing side, float hitX, float hitY, float hitZ)
{
if(((Integer)state.getValue(STAGE)).intValue() == 0)
{
if(state.getValue(VARIANT) == EnumType.BLUEBERRY)
{
world.setBlockState(pos, EmotionBlocks.baseBush.getStateFromMeta(BaseBerry.EnumType.BLUEBERRY.getMetadata()).withProperty(STAGE, 1), 2);
}
return true;
}
return false;
}
Merci encore une fois d’avance et surtout merci à jglrxavpok qui m’a déjà bien aidé.