The PlayerDestroyItemEvent isn't being triggered on the server in 1.11 when an itemstack becomes empty in PlayerInteractionManager.tryHarvestBlock (i.e. when placing the last block in a stack).
Also, since 1.9, when a held item (like a sword) gets broken the PlayerDestroyItemEvent is triggered before the held item gets removed, so when a PlayerDestroyItemEvent handler replaces the broken item with a new one the replacement gets removed instead.
My mod is working fine in worlds created in 1.7.2 but I'm encountering problems with Block objects in worlds imported from 1.6.4.
The problems seem to be caused by GameData.injectWorldIDMap remapping my block ids in GameData.blockRegistry but not remapping their ItemBlock counterparts in GameData.itemRegistry
[server thread/INFO]: Found block id mismatch balancedexchange:reactivity_block : 167 501
Block.getBlockById(501) == BalancedExchange.reactivityBlock
Item.getItemById(501) == null
Item.getItemById(167) == new ItemStack(BalancedExchange.reactivityBlock).getItem()
Item.getItemFromBlock(BalancedExchange.reactivityBlock) == null
Block.getBlockFromItem(new ItemStack(BalancedExchange.reactivityBlock).getItem()) == Blocks.air
Changing my block's id to 167 in 1.6.4 fixes the problems but obviously isn't a valid solution.
I'm using latest versions of forge (1.7.2-10.12.0.1034 and 1.6.4-9.11.1.965) and in 1.6.4 I register the block in BalancedExchange.preInit using GameRegistry.registerBlock(reactivityBlock, "balancedexchange:reactivity_block")
Is this a bug with injectWorldIDMap, or is there something I'm missing?
1 reply
Important Information
By using this site, you agree to our Terms of Use.