MrDj200 Posted September 18, 2017 Posted September 18, 2017 Hey there o/. I made a Tile Entity with the "ITickable" interface and I'm using the Overwritten method "update()" to let the Block do something. And that works fine, except when I reload the world, it does not work anymore. Block updates won't start it either. It needs to be replaced. What am I missing, is "update()" the wrong method? Here's the code: https://pastebin.com/5vkT7eaJ -Dj Quote
MrDj200 Posted September 18, 2017 Author Posted September 18, 2017 Oh, where is this supposed to go? Quote
oldcheese Posted September 18, 2017 Posted September 18, 2017 (edited) I'm fairly sure that starting 1.11 you want to register it in PreInit(), and your renderer in your client proxy PreInit(), but now that I've re-read I've noticed you're in 1.12, however, I'm not sure how to delete this post. edit: nevermind. I'm thinking about the wrong version. Edited September 18, 2017 by oldcheese I can't read 1 Quote
MrDj200 Posted September 18, 2017 Author Posted September 18, 2017 Ah, thanks! Works now! However, what is supposed to go into the 2nd parameter (key)? GameRegistry.registerTileEntity(tileEntityClass, key); Quote
lyn mimistrobell Posted February 13, 2018 Posted February 13, 2018 (edited) I'm having the same issue and I'm wondering about the different events that are being used. My main class implements: @Mod.EventHandler public void preInit(FMLPreInitializationEvent event) @Mod.EventHandler public void init(FMLInitializationEvent event) @Mod.EventHandler public void postInit(FMLPostInitializationEvent event) It also defines this class @Mod.EventBusSubscriber public static class RegistrationHandler implementing these methods: @SubscribeEvent public static void registerItems(RegistryEvent.Register<Item> event) @SubscribeEvent public static void registerItems(ModelRegistryEvent event) @SubscribeEvent public static void registerBlocks(RegistryEvent.Register<Block> event) I got this from some tutorials and I was under the impression that the RegistrationHandler was the new preferred implementation. I tried this in both the preInit and the registerBlocks events: GameRegistry.registerTileEntity(MyTileEntity.class, "mymod:my_tile_entity") And still my TE doesn't trigger onLoad until I right-click the block to open the GUI. Previously I had seen some "Skipping BlockEntity with id " (and no id was printed there) which leads me to believe my TE's weren't storing their NBT but after moving the registryTileEntity to preInit that error is gone. 1. What is the preferred implementation for the registration events; in which event should I register the Block and the TE? 2. Why is my TE not loaded on world load? Edited February 13, 2018 by lyn mimistrobell Quote
Draco18s Posted February 13, 2018 Posted February 13, 2018 53 minutes ago, lyn mimistrobell said: I got this from some tutorials and I was under the impression that the RegistrationHandler was the new preferred implementation. Yes it is. 54 minutes ago, lyn mimistrobell said: And still my TE doesn't trigger onLoad until I right-click the block to open the GUI. Show your code. Quote Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable. If you think this is the case, JUST REPORT ME. Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice. Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked. DO NOT PM ME WITH PROBLEMS. No help will be given.
lyn mimistrobell Posted February 13, 2018 Posted February 13, 2018 2 hours ago, Draco18s said: Show your code. I provided all the relevant code... In the log I see it does: - preInit (on Client) - RegistrationHandler.registerBlocks (on Client) - GameRegistry.registerTileEntity (on Client) - RegistrationHandler.registerItems (on Client) - RegistrationHandler.registerItems (on Client, for the models) - init (on Client) - postInit (on Client) Then when I right-click my block: - onBlockActivated (on Server) - TE.onLoad (on Server) - TE.onLoad (on Client) Anything unexpected here? The block itself is registered on RegistrationHandler.registerBlocks; is that a problem? Quote
sir_titi Posted February 13, 2018 Posted February 13, 2018 (edited) you should make sure in you block you have the method's hasTileEntity() (although not sure if this is needed), and also createTileEntity(). Edited February 13, 2018 by sir_titi typo :p Quote Always looking for new challenges, and happy to help the people where ever I can
lyn mimistrobell Posted February 13, 2018 Posted February 13, 2018 I've implemented: - getTileEntityClass - getTileEntity - hasTileEntity (returns true) - createTileEntity(world, state) (though deprecated) - createTileEntity(world, meta) (though deprecated) My Block and TE class have a constructor without parameters. One thing that bugs me is that all registrations happen through event.getRegistry; except for the TE registration which uses GameRegistry.registerTileEntity - seems inconsistent. Quote
sir_titi Posted February 13, 2018 Posted February 13, 2018 (edited) and you are implementing "ITileEntityProvider"? cuss those method's you call are not recommended implement the interface i said and use those method's that have the Blockstate instead of the meta And yea i know but hey! Make a wrapper method and you no longer see that :p. Edited February 13, 2018 by sir_titi Quote Always looking for new challenges, and happy to help the people where ever I can
loordgek Posted February 13, 2018 Posted February 13, 2018 3 hours ago, Draco18s said: Show your code all of it post it on https://github.com/ Quote
Draco18s Posted February 13, 2018 Posted February 13, 2018 1 hour ago, lyn mimistrobell said: I provided all the relevant code... No you didn't. I want to see your entire Block and entire TileEntity classes. Possibly also other things, I can't be sure. Quote Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable. If you think this is the case, JUST REPORT ME. Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice. Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked. DO NOT PM ME WITH PROBLEMS. No help will be given.
lyn mimistrobell Posted February 14, 2018 Posted February 14, 2018 I found the problem; my writeToNBT method didn't call super.writeToNBT so the TileEntity class never stored my TE's id. Quote
Recommended Posts
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.