Il faut passer par une fonction qui donne accès à world. Si tu cherches où getItemDropped est appelé tu vas tomber sur la fonction getDrops dans la classe Block :
| public void getDrops(NonNullList<ItemStack> drops, IBlockAccess world, BlockPos pos, IBlockState state, int fortune) |
| { |
| Random rand = world instanceof World ? ((World)world).rand : RANDOM; |
| |
| int count = quantityDropped(state, fortune, rand); |
| for (int i = 0; i < count; i++) |
| { |
| Item item = this.getItemDropped(state, rand, fortune); |
| if (item != Items.AIR) |
| { |
| drops.add(new ItemStack(item, 1, this.damageDropped(state))); |
| } |
| } |
| } |
Il suffit donc de l’override dans la classe de ton bloc et d’en changer le comportement :
| @Override |
| public void getDrops(NonNullList<ItemStack> drops, IBlockAccess world, BlockPos pos, IBlockState state, int fortune) |
| { |
| boolean isDay = world instanceof World ? (((World)world).getWorldTime() % 24000 < 13000) : true; |
| if (isDay) |
| { |
| drops.add(new ItemStack(TutorialItems.SOLARIUMSHARD , 1)); |
| } |
| else |
| { |
| drops.add(new ItemStack(TutorialItems.LUNARIUMSHARD, 1)); |
| } |
| } |