Posted February 15, 20178 yr The only way I've seen to be able to change the drops of a block is to override Block.getDrops() in a Block subclass. Is there a way that I can modify the drops of a vanilla block without creating a subclass for it, and replacing instances of it in the world with my new one? Edited February 15, 20178 yr by Aarilight (updated title for future searchers)
February 15, 20178 yr Subscribe to the HarvestDropsEvent, which will give you access to drops and the harvester. More info on events here. Don't PM me with questions. They will be ignored! Make a thread on the appropriate board for support. 1.12 -> 1.13 primer by williewillus. 1.7.10 and older versions of Minecraft are no longer supported due to it's age! Update to the latest version for support. http://www.howoldisminecraft1710.today/
February 15, 20178 yr Author @SubscribeEvent public static void onSpawnerHarvest(BlockEvent.HarvestDropsEvent event) { if (event.getState().getBlock() == Blocks.MOB_SPAWNER) { } } How do I edit the drops from here? the event doesn't seem to have any useful methods to replace them. Do I have to prevent the normal event and drop the items myself? Edited February 15, 20178 yr by Aarilight update code language
February 15, 20178 yr The HarvestDropsEvent contains a List<ItemStack> called drops. You can modify this List<ItemStack> however you want. Don't PM me with questions. They will be ignored! Make a thread on the appropriate board for support. 1.12 -> 1.13 primer by williewillus. 1.7.10 and older versions of Minecraft are no longer supported due to it's age! Update to the latest version for support. http://www.howoldisminecraft1710.today/
February 15, 20178 yr Author Oh, I was being dumb. I saw .getDrops() and was thinking I'd need .setDrops(). It's the same object, so editing it does the same thing. #genius Edited February 15, 20178 yr by Aarilight
February 15, 20178 yr Author In case anyone is ever trying to change the drops of a mob spawner based on the type it is, in the future, and found this old post, and got sad, there is a way! You must subscribe to both BreakEvent and HarvestDropsEvent. In BreakEvent, when it's a Blocks.MOB_SPAWNER, set a static field to the TileEntityMobSpawner. In the HarvestDropsEvent, when the same condition is met, use the TileEntityMobSpawner you saved.
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.