Jump to content
View in the app

A better way to browse. Learn more.

Forge Forums

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Choonster

Moderators
  • Joined

  • Last visited

Everything posted by Choonster

  1. Your screenshot didn't post correctly. Upload it to an image hosting site like Imgur and link it here. It may help if you post your FML log (logs/fml-client-latest.log in your Minecraft folder) as well. Upload it to Gist or Pastebin and link it here.
  2. If you look carefully, you'll notice that it's being printed once from the client thread and once from the server thread. There is almost never a good reason to use the output of toString for anything but log/exception messages. In this case, you should compare block directly to the Note Block instance ( Blocks.noteblock ) using the equality ( == ) operator. If they're the equal (i.e. the same object), the block is a Note Block.
  3. The Fluid defines the physical properties (e.g. luminosity, density) and textures of the fluid. The IFluidBlock represents a block of the fluid in the world and uses the properties of the Fluid to determine the block's light level, flow speed, etc. BlockFluidClassic acts like vanilla liquids, you can use other implementations of IFluidBlock for different fluid behaviour. It tells my Fluid Tank block to include a version of itself filled with that Fluid in creative tabs/NEI. ModModelManager#registerFluidModel registers a model for the specified IFluidBlock . I explained what this method does in the thread I linked previously.
  4. Forge does provide mechanisms for modded fluids, look at the net.minecraftforge.fluids package. I explained a lot of the fluid system (including example code) in this thread a while back. Post #5 explains the fluid initialisation and registration, post #19 explains the model registration. I overhauled my fluid registration code after that post to properly support existing fluids, you can see the updated code here (model registration for fluids and buckets is here). My code uses several Java 8 features, if you're not compiling against Java 8 you'll need to replace these with the corresponding Java 6 features (e.g. replace lambdas with anonymous classes).
  5. createBlockState is called from the Block constructor. Your blockstates file looks correct, but I've never worked with OBJ models myself. If you use a simple JSON model like block/cube_all and set the all texture, does it work?
  6. Somehow the IProperty array you're passing to the ExtendedBlockState constructor contains a null value, but I can't see how that could happen in your current code since WOOD_TYPE is initialised in a static field. If you set a breakpoint on that line, is WOOD_TYPE null ? Does the value at index 0 of the array become null in the BlockState constructor before the exception is thrown?
  7. The changelog for each Forge version can be downloaded from files.minecraftforge.net. MCP mappings (which map SRG names like func_1121_a to MCP names like doStuff ) can be downloaded from the MCPBot website.
  8. InventoryTweaks 1.59-dev-152 is for 1.7.10. InventoryTweaks 1.59-dev-165 and newer are for 1.8.
  9. Your itemspawnmover.json model is using the wrong resource domain for the parent model and texture, i.e. pingusrandomstuff instead of pingusrandoms (the actual name of the folder with your assets in it).
  10. Minecraft's vector classes aren't compatible with the javax.vecmath classes, you'll need to manually convert between them (i.e. create a new instance of the other vector class using the same coordinates as the existing vector).
  11. You should be registering renderers in your client proxy, not your main class. If you call a client-only method or reference a client-only class in your main class, your mod will crash when run on a dedicated server.
  12. It looks like you haven't overridden Block#getIcon , so it's still trying to use Block#blockIcon (which is null ) as the texture.
  13. There's no single "extract item" method, but pipes will usually use IInventory#decrStackSize or IInventory#setInventorySlotContents to extract items from a slot.
  14. There's no events for this, but itemducts and their equivalents in other mods use the IInventory / ISidedInventory interfaces to interact with TileEntity s that have inventories. You can do whatever you need to from your implementation of these interfaces.
  15. Damage Indicators Mod is client-only, it doesn't work on servers.
  16. Yes, they're handled by @EventHandler methods in your @Mod class like the preInit, init and postInit events. I just tested this using this code and I can confirm that it works for dedicated and integrated servers. [spoiler=Dedicated server] [23:32:04] [server thread/INFO]: Stopping the server [23:32:04] [server thread/INFO]: Server stopping. Dedicated? true [23:32:04] [server thread/INFO]: Stopping server [23:32:04] [server thread/INFO]: Saving players [23:32:04] [server thread/INFO]: Saving worlds [23:32:04] [server thread/INFO]: Saving chunks for level 'world'/Overworld [23:32:04] [server thread/INFO]: Saving chunks for level 'world'/Nether [23:32:04] [server thread/INFO]: Saving chunks for level 'world'/The End [23:32:04] [server thread/INFO]: Unloading dimension 0 [23:32:04] [server thread/INFO]: Unloading dimension -1 [23:32:04] [server thread/INFO]: Unloading dimension 1 [23:32:04] [server thread/INFO]: Remapping stats for 0 blocks/items [23:32:05] [server thread/INFO]: Applying holder lookups [23:32:05] [server thread/INFO]: Holder lookups applied [23:32:05] [server thread/INFO]: Server stopped. Dedicated? true [spoiler=Integrated Server] [23:40:14] [server thread/INFO]: Server stopping. Dedicated? false [23:40:14] [server thread/INFO]: Stopping server [23:40:14] [server thread/INFO]: Saving players [23:40:15] [server thread/INFO]: Saving worlds [23:40:15] [server thread/INFO]: Saving chunks for level 'New World'/Overworld [23:40:15] [server thread/INFO]: Saving chunks for level 'New World'/Nether [23:40:15] [server thread/INFO]: Saving chunks for level 'New World'/The End [23:40:15] [server thread/INFO]: Unloading dimension 0 [23:40:15] [server thread/INFO]: Unloading dimension -1 [23:40:15] [server thread/INFO]: Unloading dimension 1 [23:40:15] [server thread/INFO]: Remapping stats for 0 blocks/items [23:40:15] [server thread/INFO]: Applying holder lookups [23:40:15] [server thread/INFO]: Holder lookups applied [23:40:15] [server thread/INFO]: Server stopped. Dedicated? false
  17. Are you sure those events don't fire for the integrated server? It looks like they're fired in Loader#serverStopped , which is indirectly called at the end of MinecraftServer#run (from FMLCommonHandler#handleServerStopped ).
  18. There's an invalid character on line 1 of config/MoCreatures/MoCSettings.cfg. Either delete the character or delete the file completely and allow it to be regenerated.
  19. You've cut off part of the crash report. Post the full thing.
  20. Binnie's Mods don't work with Forestry 4.x yet. Either disable Binnie's Mods or revert to Forestry 3.x.
  21. No, but you can use the vanilla lever's blockstates file as an example, just split the model and the rotation: define the model as either a default (single model) or based on the appropriate property (multiple models like the lever) and then define the rotation based on the facing property.
  22. You don't have CoFHCore installed.
  23. Have you tried looking at BlockLever ? It uses its own enum to describe the possible facings and sets the facing from Block#onBlockPlaced when it's placed.
  24. You're only registering your items in ClientProxy , which means they're not registered on the dedicated server. Keep all block, item, entity, etc. registration code in methods called from your @Mod class so the code is run on both sides. Blocks, items, entities, etc. should be registered in preInit, recipes and ore dictionary entries should be added in init. Keep all model and renderer registration code in methods called from ClientProxy so the code is only run on the client side.
  25. It should be okay to save the EnergyStorage in the root compound tag or a nested compound tag. It's not a slot, it doesn't need a slot number.

Important Information

By using this site, you agree to our Terms of Use.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.