Jump to content

Recommended Posts

Posted (edited)

Hello fellow programming humans

 

I want to get into making different block models, ones that don't take up a full block space, an example could be something like a conduit from EnderIO.

 

Now sadly, despite loving the coding lifestyle, I can't for the life of me figure out how to go about it with my one single solitary remaining brain cell.
I'm asking in short, if anyone knows of some big documentation I can sink my head in to, or any other places I can find explanations for how I would go about doing such a thing, and if you've done it yourself, any particular things I should avoid doing
I'm pretty new to all this stuff, but I do have a fairly reasonable knowledge base for general java and OOP development, just a touch out of my depth here, because I don't really know where to start.

 

Thank you ❤️

Edited by MistaOmega
Added game version
Posted

Currently, there's no big complete authoritative source of documentation on many aspects of Forge modding; most modders go by reading tutorials and guides for simple to mid-level concepts, and either reading source code or asking for help on chats or forums like these for more difficult or niche concepts (minutiae of rendering, MC internals, custom dimensions/worlds).

 

Most big guides and tutorials are outdated; major updates to Minecraft means changes to its internals. For example, 1.8 started the process of moving from metadata to BlockStates, 1.13 had the Flattening and added datapacks, and 1.15 changed the rendering system.

 

Some guides and tutorials which I found and read are:

Now, to answer your titular question:

 

Blockstate JSONs using the multiparts tag allow a quick and easy way to implement pipe- or fence-like models. Non-animated models can use JSONs, or OBJ files. For anying more complex or animated, use TileEntityRenderers (but if possible, always use normal models).The 1.15 update changing the rendering system simplifies it from learning OpenGL from scratch to mostly never needing it. See Block#getShape and related methods for how collision boxes work (look at vanilla code or above tutorials).

 

If you can't understand it yet, try looking at code from other mods and seeing how they do block rendering. Fork/clone a copy, and start reading and messing around with the code using the debug tool in your IDE. If you have any questions, please either reply or make a new thread detailing your issues or your questions.

  • Thanks 1
Posted

Also maybe take a look at BlockBench, it might be helpful for visualizing your block models. I have not messed with it much, so cannot vouch for how well it exports json/java for direct use in modding.

 

See if you can find a vanilla equivalent of what you are trying to make, and take a look at the vanilla models/code, and see how they do it. That's probably the best reference you can get right there, at least for some of the easier stuff. There should be a client-extras.jar or something similar in your IDE references that contains the vanilla jsons.

  • Thanks 1
Posted

I previously made some pipes in one of my test mods here.

They can’t transfer items at the moment, but the models and connection to other pipes/inventories are functional.

Check out the block state file for it, which used the multipart feature of the model system.

  • Thanks 1

Some tips:

  Reveal hidden contents

 

Posted
  On 6/3/2020 at 1:21 PM, DavidM said:

I previously made some pipes in one of my test mods here.

They can’t transfer items at the moment, but the models and connection to other pipes/inventories are functional.

Check out the block state file for it, which used the multipart feature of the model system.

Expand  

It doesn't look like any of the assets are in that repo, so we can't see the blockstate for it.

  • Like 1
Posted
  On 6/3/2020 at 1:21 PM, DavidM said:

I previously made some pipes in one of my test mods here.

They can’t transfer items at the moment, but the models and connection to other pipes/inventories are functional.

Check out the block state file for it, which used the multipart feature of the model system.

Expand  

Yeah I don't think the blockstate is in the assets folder ?

Posted (edited)
  On 6/3/2020 at 5:11 PM, MistaOmega said:

Yeah I don't think the blockstate is in the assets folder ?

Expand  
  On 6/3/2020 at 3:19 PM, Ugdhar said:

It doesn't look like any of the assets are in that repo, so we can't see the blockstate for it.

Expand  

Ah sorry! I somehow forgot to push to remote for quite a while.

Anyways, here is the blockstate file.

(Note that by item_pipe I meant the model of the pipe that transfers item, as opposed to the item model of a pipe)

 

In addition, SixWayBlock can handles almost everything about the blockstate and collision boxes of a block that can connect to 6 directions (i.e. pipes). Check out the vanilla chorus plant for usage.

Edited by DavidM
  • Thanks 2

Some tips:

  Reveal hidden contents

 

Posted
  On 6/4/2020 at 1:34 AM, DavidM said:

Ah sorry! I somehow forgot to push to remote for quite a while.

Anyways, here is the blockstate file.

(Note that by item_pipe I meant the model of the pipe that transfers item, as opposed to the item model of a pipe)

 

In addition, SixWayBlock can handles almost everything about the blockstate and collision boxes of a block that can connect to 6 directions (i.e. pipes). Check out the vanilla chorus plant for usage.

Expand  

Thank you for the help man! Appreciate it ❤️

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.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • Hi everyone, I'm currently developing a Forge 1.21 mod for Minecraft and I want to display a custom HUD overlay for a minigame. My goal: When the game starts, all players should see an item/block icon (from the base game, not a custom texture) plus its name/text in the HUD – similar to how the bossbar overlay works. The HUD should appear centered above the hotbar (or at a similar prominent spot), and update dynamically (icon and name change as the target item changes). What I've tried: I looked at many online tutorials and several GitHub repos (e.g. SeasonHUD, MiniHUD), but most of them use NeoForge or Forge versions <1.20 that provide the IGuiOverlay API (e.g. implements IGuiOverlay, RegisterGuiOverlaysEvent). In Forge 1.21, it seems that neither IGuiOverlay nor RegisterGuiOverlaysEvent exist anymore – at least, I can't import them and they are missing from the docs and code completion. I tried using RenderLevelStageEvent as a workaround but it is probably not intended for custom HUDs. I am not using NeoForge, and switching the project to NeoForge is currently not an option for me. I tried to look at the original minecraft source code to see how elements like hearts, hotbar etc are drawn on the screen but I am too new to Minecraft modding to understand. What I'm looking for: What is the correct way to add a custom HUD element (icon + text) in Forge 1.21, given that the previous overlay API is missing? Is there a new recommended event, callback, or method in Forge 1.21 for custom HUD overlays, or is everyone just using a workaround? Is there a minimal open-source example repo for Forge 1.21 that demonstrates a working HUD overlay without relying on NeoForge or deprecated Forge APIs? My ideal solution: Centered HUD element with an in-game item/block icon (from the base game's assets, e.g. a diamond or any ItemStack / Item) and its name as text, with a transparent background rectangle. It should be visible to the players when the mini game is running. Easy to update the item (e.g. static variable or other method), so it can change dynamically during the game. Any help, code snippets, or up-to-date references would be really appreciated! If this is simply not possible right now in Forge 1.21, it would also help to know that for sure. Thank you very much in advance!
    • The simple answer is there is not an easy way. You would need to know how to program in Java, as well as at least some familiarity with how Forge works so you could port the differences. You would also need the sourcecode for the original mod, and permission from the author to modify it, if they did not use some sort of open source license. So it's not impossible, but it would take some effort, but doing so would open up a whole new world of possibilities for you!
    • Does it still crash if you remove holdmyitems? Looks like that mod doesn't work on a server as far as I can tell from the error.  
    • Crashes the server when trying to start. Error code -1. Log  
  • Topics

×
×
  • Create New...

Important Information

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