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. That will work. Is there a reason why you need such a complex chain of methods to get the Block ? Is it not just stored in a public field? Is block a class? If it is, it should be named using PascalCase .
  2. IForgeRegistryEntry is an interface implemented by all vanilla singleton classes, e.g. Block , Item , Biome , Enchantment . To register instances of any of these classes, simply set the registry name by calling setRegistryName and then register it by calling GameRegistry.register .
  3. Substitution aliases should be fixed now (see this issue), though I still haven't managed to get them working myself. I need to verify this and file a proper bug report at some point. Edit: Reported here.
  4. Forge will usually log errors for any missing/invalid models, but there's nothing in the log. Are you sure you're registering your models in preInit? Using ModelLoader methods in init or later will result in your blocks/items rendering as the missing model and no errors being logged.
  5. I explain how to properly register Block s and other IForgeRegistry implementations in 1.9+ here.
  6. You can specify your Mojang account username (email address) and password using the --username and --password arguments in your IDE's launch profile and ForgeGradle will launch the client using your account instead of a random one.
  7. You need to include the FMLCorePluginContainsFMLMod attribute in your JAR manifest for FML to look for @Mod classes after it finds a coremod. Are you sure you need a coremod? Coremods/ASM should be avoided if at all possible.
  8. ModelLoader.setCustomMeshDefinition must be called in preInit, not init.
  9. You can submit a pull request on GitHub.
  10. You need to override Block#getStateFromMeta and Block#getMetaFromState to convert between state and metadata.
  11. You need to access the field using reflection.
  12. The error is in your override of Block#createBlockState , so try looking at the super method's signature to see what it returns.
  13. I believe that has solved it, and removed #getRenderType 1 public static final PropertyInteger LEVEL = PropertyInteger.create("level", 0, 15); Not sure why I am using 16 of these ... is that required? Well, I can fix that later lol Make sure you're using the BlockLiquid.LEVEL property rather than creating your own. Creating your own will work if it has the same name and allowed values as BlockLiquid.LEVEL , but it's best to use the existing one. You don't actually need to store the value of the property in the metadata (you can completely ignore it in Block#getStateFromMeta and Block#getMetaFromState ), it just needs to be included in your block's state so outside code can query it and get 0 as the value. This is completely unrelated, create a new topic for it.
  14. OBJ models and their textures are loaded using the resource system just like JSON models. There's nothing stopping resource pack makers from replacing your models or textures.
  15. If your block uses Material.WATER , Block#canSustainPlant and a lot of other methods expect it to have the BlockLiquid.LEVEL property. Your seaweed doesn't.
  16. You don't have an inventory variant. But they do have an item model with that name, which should be loaded before Forge attempts to load the blockstates variant. For some reason a FileNotFoundException is thrown for the item model, even though that file appears to exist. I'm not too sure what's causing this, you can try running the clean Gradle task to delete the build directory and then cleanEclipse / cleanIdea to delete the IDE project before re-importing it.
  17. No. ITileEntityProvider sucks, maybe not as much as BlockContainer , but it still sucks. Simply override hasTileEntity and createTileEntity from the Block class. Ah, my mistake - for some reason I thought ITileEntityProvider was responsible for those two methods. What's the point of that interface, then? The interface is added by vanilla and used by BlockContainer . Forge patches the Block class to add the methods diesieben07 mentioned, which use IBlockState instead of metadata.
  18. Please post the latest model registration code for the exchange wand. In future please post the FML log (logs/fml-client-latest.log) rather than the console output, it contains more potentially useful information.
  19. I'm not too sure what would cause this. Post your FML log (logs/fml-client-latest.log), it may tell us something.
  20. NEI couldn't find CodeChickenCore. Make sure you have it installed. In future, please post the full FML log (logs/fml-client-latest.log in your game directory) rather than a snippet of the console output.
  21. The best way to do this is to shade the artifact into your JAR. I do this using the Shadow plugin here.
  22. I do this in 1.7.10 here, it should be mostly similar in 1.9.4.
  23. I probably can't help you myself, but you should post your code to increase the chances of someone else being able to help you.
  24. Entity renders and TESRs have hooks that allow complete control of rendering. As far as I am aware, there is no longer anything like that for items. I misread the OP, I thought they were making a block with a TESR that rendered a floating item. This won't work for an item displaying another item. To render another item on top of your item, you'll need to create your own ICustomModelLoader , IModel and ItemOverridesList implementations. You'll probably also need an IBakedModel . I can't tell you how to implement these, because I don't know myself. You'll need to look at examples in Forge itself, e.g. ModelDynBucket . diesieben07 has also discussed this with other people here and here, though a lot of the advice was for 1.8.9.

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.