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.

Draco18s

Members
  • Joined

  • Last visited

Everything posted by Draco18s

  1. The item model uses a specific special texture, just like Cake and Doors. You would know this if you had looked at the models json file for the item.
  2. And an oddball outdated version none the less.
  3. Like this spot fucking mattered. All this is is a check to see if the stack isn't empty. Copying it doesn't change anything. Honestly. The other (useful) spot to do it would have been here:
  4. I haven't dug into it at all myself, but the information is going to be in there somewhere.
  5. Oh jesus christ. There are like five better ways to do this. Just two I can think of block instanceof DoorBlock && block.getMaterial() == Material.WOOD block == Blocks.ACACIA_DOOR || <the rest> Just because something can be expressed as a string doesn't mean you should.
  6. ...and? I'm really not sure what your point is.
  7. Hilariously, that's because if you right click on a chest, its automatically open. Also this:
  8. Right Click -> View Type Hierarchy?
  9. Have you tried looking at the vanilla vine block class?
  10. Because you (quite literally) stole the stack from your recipe manager. ItemStack output = FusionReactorRecipes.getInstance().getSinteringResult(inputs[0], inputs[1]); if(!output.isEmpty()) { smelting = output; You have to call .copy() on it.
  11. By the way, Minecraft vanilla doesn't apply the random rotation thing to ores. You're free to do whatever you want, but I am one of those sorts of people who look at vanilla and tries to match style and ethos. So if vanilla doesn't apply random rotations to ores, then my ores won't have random rotation either. This the closest I've come to having a non-square model, and even then its based on the math behind water, soo... (By the way, don't forget to add your ore blocks and items to the tag system)
  12. Its still a Forge-controlled event. My reasons for not creating directly inside the Registry event is that I only need one registry event handler that supports four mods and keeps my main class looking clean and organized. All the crazy wackadoo "this block needs to do something special" code is tucked away either in that block, a block-adjacent class (eg an ItemBlock), or the EasyRegistry's methods.
  13. Don't let the door hit you on the way out.
  14. https://github.com/Draco18s/ReasonableRealism/blob/1.12.1/src/main/java/com/draco18s/hardlib/client/ClientEasyRegistry.java#L66-L71 But you should be flattening your blocks at this point. I don't care if you're still on 1.12, when you move to 1.13 you'll have to do it anyway https://github.com/Draco18s/ReasonableRealism/blob/1.12.1/src/main/java/com/draco18s/hardlib/client/ClientEasyRegistry.java#L79-L97
  15. I'm not sure why you need a tutorial to type the commands "gradlew genEclipseRuns" and "gradlew eclipse" into a terminal window.
  16. That is correct. Unlikely. I would have to see a specific use-case scenario. I used something similar to handle items with a custom mesh definition as I was passing things through to a method that didn't have specific knowledge and needed to query a method on the Item passed to it. Though I could just as easily have use two separate objects.
  17. That's the one that didn't survive to 1.14, you're looking for: @Override public BlockRenderLayer getRenderLayer() { return BlockRenderLayer.CUTOUT_MIPPED; //or TRANSPARENT or CUTOUT as you require }
  18. One of the parameters is a boolean called isSilkTouch.
  19. 1) You don't need IHasModel at all. All items need models. ALL OF THEM. ALL OF THEM NO EXCEPTIONS and the data required to register one is public. Blocks get their models registered automatically (this is true of items as well come 1.13). Its an antipattern because you will never have an item that does not have a model, so utilizing an interface to supply it is worse than useless (your blocks that require IHasModel? They have ItemBlocks and ItemBlocks are items and require a model). You're actually writing more code than not using the interface. 2) block instanceof BakedModelProvider is bad. BakedModelProvider is almost certainly client side only (or references something that's client side only) and will crash the dedicated server
  20. Finally figured out what was going on. I wasn't taking into account the side parameter, so all the faces I was generating were being rendered 6 times. I just didn't expect that to do that that way. Once I fixed that I figured out that the 7F00 value was affecting the transparency and was "too transparent" (despite having been the value that was returned when I told vanilla code to generate quads). End result: fucking beautiful Also made the wood part follow the angle, as I'd always wanted to have happen.
  21. You don't override interface methods, you implement them. And don't implement Forge's extension interfaces directly. Extend Block or Item as appropriate, they already implement those methods, all you have to do is write @Override methods. Like so: https://github.com/Draco18s/ReasonableRealism/blob/1.14.4/src/main/java/com/draco18s/harderores/block/SluiceBlock.java#L119-L123
  22. In taking 15 seconds to find the implementors of IForgeRegistryEntry (everything that can be registered via the registry events) and locating the ParticleType class and finding out that it has a <T> parameter and a subclass that specifies how it is to be used: public class BasicParticleType extends ParticleType<BasicParticleType> implements IParticleData { Done. Its not that hard.

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.