Why hello there! Glad you have stumbled upon my mod.
BluDecorations is a mod stemming from my first delving into 3D modeling with Blender and the use of those models in Minecraft.
This is not my first mod, however my first one made publicly available.
The mod's premise is the addition of a single block in three tools for its customization. You can freely configure the models displayed by the block and their texture, as well as colour, transparency, positioning, rotation and particle effects.
The average user will find that this mod comes with a variety of preset configurations, made by me, which they can adjust to their likings. To more advanced users, experienced in the concepts of Minecraft's resource system, or in forge modding, this mod offers a blank canvas for them to add custom models and textures.
Version 1.2.4/1.3.2
- Fix: Two definite crashes removed
- Fix: Particle and Model configurations can no longer be saved without any text in the textfield.
Version 1.2.3/1.3.1
- Fix: The render doesn't break when there's an item frame nearby
- Fix: The TileEntity does not remain when the block is destroyed anymore (this caused persistent bounding boxes and model configurations)
- Added Feature: You can add a preset to a current configuration instead of replacing it. Hold CTRL. This applies for models as well as particles
- Added Feature: You can save configurations locally. These will be written into two seperate .cfg files. These configurations can then be accessed in any singleplayer world and probably on multiplayer servers (not tested, but should work in theory)
- Added Feature: Infinity Binoculars. Click the block with them to toggle infinite render bounds. That means that your block will always be rendered, even if the bounding box is not in view. Note that this will obviously increase the load on your system.
Source
The mod is fully open source. The source and with it the API is available on GitHub: For 1.6.4 For 1.7.2
If you want to create an addon for this mod, take a good look at it!
This is only one of the few things you can do with this mod.
Spotlight
For a more detailed look in moving pictures, check out this sweet spotlight by CaptainSparklez!
How-To
The Configureable Block is crafted like this:
The dyes can be of any colour.
The first item of this mod is the Model Wrench.
It is used to open the model configuration gui:
That will result in this gui:
You can now select a preset model from the list on the left, adjust rotation, scale, light and boundingboxes, or add a new RenderElement to the current configuration.
The sliders are moved with the mouse. hold shift to make them snap to certain steps. Hover over them and use the left/right arrowkeys to move them by a small amount.
UPDATE:
From version 1.3.1(on MC1.7.2) or 1.2.3(on MC1.6.4) onwards, CTRL+Click will add the selected preset to the current config, instead of replacing it.
Furthermore, you'll find another textfield in the middle of the screen, aswell as a "Save" button. These allow you to save the current configuration under a name of your choice.
These saves are made locally, in your config folder. Due to this, they are available in all singleplayer worlds and probably even on MP servers you join.
The "Next Page" button is deactivated, because any page following this is a render element. On a freshly placed block, there are no render elements..
If you select a preset model now, however, it will become available.
After selecting "Stone Torch" and clicking "Next Page", you are presented with this:
You are in the configuration screen for one specific RenderElement now. It may look a bit overwhelming right now, but once you got the hand of it, it's quite easy to use.
The three textfields are use to set the model and texture of this element. The model path should refer to an OBJ model (more infos on that later). The texture path requires the formatting of a so called "ResourceLocation". The modders among you will know what that is. To those that don't: It refers to a resource used by Minecraft and consists of a domain and a filepath, connected by a ':'. Look at the preset models for an example.
Finally, the Model Part Name refers to the part of the model to render.
The "Pos Y" Slider controls the height offset of the part
The field next to it the X and Z offset.
The three "Rot." sliders control the rotation around the three axes.
The Colour sliders are pretty self explanatory, colouring the model with RGB values, ranging from 0 (black) to 255 (white).
Finally, the Alpha slider controls the opacity.
That will result in this gui:
You can now select a preset model from the list on the left, adjust rotation, scale, light and boundingboxes, or add a new RenderElement to the current configuration.
The sliders are moved with the mouse. hold shift to make them snap to certain steps. Hover over them and use the left/right arrowkeys to move them by a small amount.
UPDATE:
From version 1.3.1(on MC1.7.2) or 1.2.3(on MC1.6.4) onwards, CTRL+Click will add the selected preset to the current config, instead of replacing it.
Furthermore, you'll find another textfield in the middle of the screen, aswell as a "Save" button. These allow you to save the current configuration under a name of your choice.
These saves are made locally, in your config folder. Due to this, they are available in all singleplayer worlds and probably even on MP servers you join.
The "Next Page" button is deactivated, because any page following this is a render element. On a freshly placed block, there are no render elements..
If you select a preset model now, however, it will become available.
After selecting "Stone Torch" and clicking "Next Page", you are presented with this:
You are in the configuration screen for one specific RenderElement now. It may look a bit overwhelming right now, but once you got the hand of it, it's quite easy to use.
The textfields are use to set the model and texture of this element.
Both the model path and the texture path are set in the style of the ResourceLocation system which was altered in 1.7. Unlike in the 1.6.4 version of this mod, the domain is now required on the model as well, and for easier management, the domain fields are separate.
The model path should refer to an OBJ model (more infos on that later).
The texture path should refer to a .png file.
Look at the preset models for an example.
Finally, the Model Part Name refers to the part of the model to render.
The "Pos Y" Slider controls the height offset of the part
The field next to it the X and Z offset.
The three "Rot." sliders control the rotation around the three axes.
The Colour sliders are pretty self explanatory, colouring the model with RGB values, ranging from 0 (black) to 255 (white).
Finally, the Alpha slider controls the opacity.
The next Item is the Particle Spraycan.
It is used to configure the particles emitted by the block:
The opened gui looks like this:
This gui works pretty much like the model customization. Instead of RenderElements, it works with ParticleElements.
UPDATE:
From version 1.3.1(on MC1.7.2) or 1.2.3(on MC1.6.4) onwards, CTRL+Click will add the selected preset to the current config, instead of replacing it.
Furthermore, you'll find another textfield in the middle of the screen, aswell as a "Save" button. These allow you to save the current configuration under a name of your choice.
These saves are made locally, in your config folder. Due to this, they are available in all singleplayer worlds and probably even on MP servers you join.
You are presented with a list of preset configurations,
And this is the configuration for a specific ParticleElement. These are a bit more tricky in setting up, since they require the actual class path for a particle entity in Minecraft. Because of this, those who actually mod themselves or have taken a look at Minecrafts source might be at an advantage here.
For the more average consumers, I've compiled a lsit of the most commonly used vanilla particles:
The other options are the same as on RenderElements though:
The "Pos Y" Slider controls the height offset of the part
The field next to it the X and Z offset.
The three "Scale" slider control the scale of the particle (this is a bit derpy, but Minecraft is to blame for that)
The Colour sliders are pretty self explanatory, colouring the particle with RGB values, ranging from 0 (black) to 255 (white).
Finally, the Alpha slider controls the opacity.
Then we have the Adjustable Instructions:
Rightclick them on a configurable block to store the model and particle configurations on the item. Click them on another block to apply that configuration there. To clean the instructions, shift+rightclick.
The final Item in this mod are the Infinity Binoculars:
Click the block with them to toggle infinite render bounds. That means that your block will always be rendered, even if the bounding box is not in view. Note that this will obviously increase the load on your system.
Lastly, if you click the blocks with a chest in your hand, the chest will be integrated into the block, allowing it to function as an inventory. So the blocks don't just look good, but also have a little bit of practical use
Custom models
This is the special part of the mod:
Users can add their custom models either by different methods.
If you're a developer, you can simply create an addon for this mod. If you do that, you can even use the API to save your models as custom configurations in the preset list.
However, the use of a custom resourcepack will also allow you to make your own (or others) .obj files available to Minecraft. It's probably best to put these models and custom textures (yes you can add those too) in a subfolder of "assets". Preferably not inside "assets/minecraft"
Some things to keep in mind about custom obj files:
The Advanced Model Loader of forge is a bit picky about the models you parse it.
Your custom models may either have only triangular faces or rectangular. No more than 4 edges and no mixing. For optimal results, tell blender to triangulate the faces on export. That way nothing can go wrong (don't quote me on that xD )
Secondly, the parts of the obj model must not contain a '.' in their name. However, blender does that automatically. Adding just a second cube mesh results in the name Cube.001. Take care to rename them, or the model loader won't be able to parse them. I'd advise the use of underscores.
And lastly: Blender is a bit derpy, and considers two connected vertices (a line) a face. which means that your obj file may contain faces made up of only 2 vertices. Since these aren't really faces, the model loader doesn't like them. And while it may seem like a huge effort to open your .obj file in a texteditor and look for those 'fake'-faces, they are always at the bottom of the faces of each object, because blender sorts faces by the amount of vertices. These thankfully don't occur to often, ideally never, if you know what you're doing on modelling and you don't leave "residue" vertices.
Credits
Big thanks go to:
- "The Skype Guys" (you know who you are ;D) for criticism, suggestions and encouragement
- Minalien for his, sadly disappeared, tutorial on using Forge's Advanced Model Loader to get .obj files into the game
- Rorax for her tutorial on configuring Blender to create a Minecraft friendly model environments (Those blurred textures (mipmaps) drove me insane ;_; )
- The Slime Knights (Tinkers Construct dev team) because Packets are awful and their sourcecode was very helpful in understanding them
Bugs
That way nothing can go wrong
If it does, however happen, please submit a bug report.
The most ideal way to do that is on my GitHub: For 1.6.4 For 1.7.2
If you don't wanna do it there, post it in this thread, however I look here less than on GitHub.
Eitherway, make sure that you include in your report:
The Version of Minecraft, of Forge and the Crash Report (if you got one) aswell as other mods you installed.
Legal Stuff
This mod is licensed under Creative Commons 3.
Short Version: You are free to use this mod and it's code, but be so kind as to say where you got it ;D
Also, you are free to use this in any modpack.
This is an amazing mod and I will love to see what it branches out to be. Maybe you can have set instructions on making models and such
Well, making models is simply the ability to work with a 3D modelling program like Autodesk or Blender, something that is hard to tutor. It's like drawing actually, you can't really teach it^^
As for branching out: This mod is essentially considered finished. It is designed to be a very simple mod in its structure but with a lot of advanced configuration options. There is however, not much more to be done, other than possibly adding more preset configurations.
The future of this mod is up to the users and addon developers.
Could you add a method of fine-tuning the sliders? It would make adjusting things like scale, position, etc. much easier.
Forgot to mention that in the tutorial. Hold shift to move it in certain steps, their size depending on the slider (Y Rotation for instance moves in 22.5 degree steps) or hover your mouse over the slider and use the left and right arrowkey
Update!
1.7.2 version is up to v1.3.1
1.6.4 version is up to v1.2.3
Changelog:
- Fix: The render doesn't break when there's an item frame nearby
- Fix: The TileEntity does not remain when the block is destroyed anymore (this caused persistent bounding boxes and model configurations)
- Added Feature: You can add a preset to a current configuration instead of replacing it. Hold CTRL. This applies for models as well as particles
- Added Feature: You can save configurations locally. These will be written into two seperate .cfg files. These configurations can then be accessed in any singleplayer world and probably on multiplayer servers (not tested, but should work in theory)
- Added Feature: Infinity Binoculars. Click the block with them to toggle infinite render bounds. That means that your block will always be rendered, even if the bounding box is not in view. Note that this will obviously increase the load on your system.
Wow, why didn't I come across this sooner? Gems like these get buried so quick and easy by the popular mods on this forum.
But goodness gracious! I don't have to go in and learn Java coding + Minecraft's Forge coding structure to make a freakin custom rendered block (even though the source and api is right there) anymore. And I HATE Techne for it's unintuitive, gui-less viewport and... everything if compared to Blender/3DS Max! So making custom rendered "anything" felt like a distant and impossible dream. Unless it was for an entity with animations. Anyway-
Then you come along and pretty much solved all my dilemma of hoping to see an actual water bucket rendered and sitting on the ground in any size the scale bar will let it be. My 3D learning of Blender and 3DS max won't go to waste anymore... Thank you so much for this! This mod is a 3D artist's OBJ-file-type dream for Minecraft! Time to re-dabble in the world of 3D modeling, alongside Minecraft. Seriously, thanks for this.
So I'm testing around with the 1.6.4 version and it seems to crash whenever I try to apply particles to my object. It doesn't destroy my world, rather if I re-log back in, the object has the particle successfully applied to it. The thing is, the particle settings reset to default every time I reload into my saved world. So it seems that when trying to apply any particle (any clicks to any buttons in the spray can's menu that has to do with applying any particle) MC will crash, but the second page works perfectly fine when adjusting a set particle. Of course, these settings reset on every re-log into the world.
While this isn't too much of an issue that affects the aesthetic value of the loaded object (the point of this mod), it kind of makes the spray can useless to use. For the 1.6.4 version at least.
The 1.7.2 version however, works perfect with no crashes.
java.lang.ClassCastException: bludecorations.client.GuiPresetParticleList cannot be cast to bludecorations.client.GuiPresetModelList
at bludecorations.client.GuiParticleCustomization.func_73875_a(GuiParticleCustomization.java:288)
at net.minecraft.client.gui.GuiScreen.func_73864_a(SourceFile:69)
at bludecorations.client.GuiParticleCustomization.func_73864_a(GuiParticleCustomization.java:154)
at net.minecraft.client.gui.GuiScreen.func_73867_d(SourceFile:128)
at net.minecraft.client.gui.GuiScreen.func_73862_m(SourceFile:107)
at net.minecraft.client.Minecraft.func_71407_l(Minecraft.java:1566)
at net.minecraft.client.Minecraft.func_71411_J(Minecraft.java:910)
at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:838)
at net.minecraft.client.main.Main.main(SourceFile:101)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at net.minecraft.launchwrapper.Launch.launch(Launch.java:131)
at net.minecraft.launchwrapper.Launch.main(Launch.java:27)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.multimc.onesix.OneSixLauncher.launch(OneSixLauncher.java:214)
at org.multimc.EntryPoint.listen(EntryPoint.java:165)
at org.multimc.EntryPoint.main(EntryPoint.java:54)
A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------
-- Head --
Stacktrace:
at bludecorations.client.GuiParticleCustomization.func_73875_a(GuiParticleCustomization.java:288)
at net.minecraft.client.gui.GuiScreen.func_73864_a(SourceFile:69)
at bludecorations.client.GuiParticleCustomization.func_73864_a(GuiParticleCustomization.java:154)
at net.minecraft.client.gui.GuiScreen.func_73867_d(SourceFile:128)
at net.minecraft.client.gui.GuiScreen.func_73862_m(SourceFile:107)
Yes that was a very derpy mistake I made. It has been fixed.
It existed in both versions, no idea why it didn't happen in your 1.7.2 test.
As for the particle configurations vanishing on relogging:
I was unable to replicate that bug, I'll need more information on that.
Yay everything works! Time to do some more testing around with this great mod. This mod is really inspirational in making me want to fully learn to doodle with Forge (or Java entirely) coding all the while continue with 3D modeling.
I have also tried to replicate that vanishing bug (only on ver 1.6.4) but... I honestly think it's just my MultiMC setup. On one clean instance (1.6.4), it works fine and on another instance (with other mods installed) the particles vanish or default. However, this kind of derpyness has happened to other type mods I installed and tested before (same scenario in 1.6.4), where any custom rendered block would only face one direction when I placed them down (I think it was the Electrodynamics mod by CyanideX), even if the mod was installed on a forge instance with other mods removed except that mod. But not when installed on a fresh and new instance with no doodling to the MC settings. Weird eh?
Anyway I guess I'll go bug hunting for that and try to see if I run into any other odd things. Everything is so far so good though! Thanks!
can you make a tutorial on how to add custom obj's
Take a good look at the section "Custom Models" in the OP. Either add it via the resource pack system (somewhere inside /assets, create a folder named mycustommodels or something...), or write an addon mod using the API and place it in the mods resources.
While I haven't had the time to fully explore this mod to its fullest potential, I couldn't help but wonder if you are planning to add support for java model files made from the popular Techne, or Techne's own save file type in the future? While I personally hate that modeling program because it doesn't have intuitive gui controls like Blender/3DS Max/Maya/etc for selection in size and rotation that you can change directly in the viewport, it has it's uses. Sort of.
I'm guessing, this mod will probably gain much more attention (as it should because it can load freakin custom obj's! For Forge servers that is virtually unlimited creativity), if it had that sort of, duo prowess in being able to load OBJ's and Java/Techne models. Why would that matter if a box in OBJ is still a box in shape in Java? I honestly have no clue. Just a thought. Techne is the popular program to use for Minecraftians and modders because of it's java spitting powers. If the gap between OBJ's and Java file types was bridged, oh the wonders.
Another question: will animations ever be supported in the future? Not anything complex like a flying dragon, but like a simple animation similar the chest animation or a rotating/orbiting/blinking animation. Or even better, a right-click that changes the model/texture/particle to another set model/texture/particle. For example, you modeled a closed wardrobe and right click it (or whatever preset button) and it switches it's model to an opened version. Right click it again and you go into the chest gui, if you added a chest to the second model of course. Then right click it again and it reverts to the first model. Just a thought.
Hate to necro.. but this mod needs the attention. Holy freeking crow... this mod is amazing! What better way to make giant penises delapidated buildings complete with destroyed chests, than this mod! Blu, please don't abandon this... I havn't tested it, so I don't know if it does or doesn't work in 7.10, but maybe you could still look back t the code. Who knows! There might be alot of optimizations and even features that you could add
And I'm sure that, (once this thread has been bumped to the top of the mod list in the forums) tens, maybe twenties of people will start posting "can you update for 1.8" or "Is this compatable with 1.7.10?" (to those of you who ask that last one, add this mod, make a new world, if your minecraft doesn't explode when you boot up and make a new world, then yes, it is compatible)
Hate to necro.. but this mod needs the attention. Holy freeking crow... this mod is amazing! What better way to make giant penises delapidated buildings complete with destroyed chests, than this mod! Blu, please don't abandon this... I havn't tested it, so I don't know if it does or doesn't work in 7.10, but maybe you could still look back t the code. Who knows! There might be alot of optimizations and even features that you could add
And I'm sure that, (once this thread has been bumped to the top of the mod list in the forums) tens, maybe twenties of people will start posting "can you update for 1.8" or "Is this compatable with 1.7.10?" (to those of you who ask that last one, add this mod, make a new world, if your minecraft doesn't explode when you boot up and make a new world, then yes, it is compatible)
It works fr 1.7.10. I wrote it back when the switch from 1.6 was made, so I released it for both.
It does /not/ work with 1.8, because renderign in 1.8 is way different. I also haven'T touched 1.8 at all, and don't intend to for now.
This mod is kinda "done" for me. I fixed all the bugs that popped up and let it rest, sicne I consider it my weakest work.
Why hello there! Glad you have stumbled upon my mod.
BluDecorations is a mod stemming from my first delving into 3D modeling with Blender and the use of those models in Minecraft.
This is not my first mod, however my first one made publicly available.
The mod's premise is the addition of a single block in three tools for its customization. You can freely configure the models displayed by the block and their texture, as well as colour, transparency, positioning, rotation and particle effects.
The average user will find that this mod comes with a variety of preset configurations, made by me, which they can adjust to their likings. To more advanced users, experienced in the concepts of Minecraft's resource system, or in forge modding, this mod offers a blank canvas for them to add custom models and textures.
Download
For 1.6.4
For 1.7.2
Changelog
Source
The mod is fully open source. The source and with it the API is available on GitHub:
For 1.6.4
For 1.7.2
If you want to create an addon for this mod, take a good look at it!
This is only one of the few things you can do with this mod.
Spotlight
For a more detailed look in moving pictures, check out this sweet spotlight by CaptainSparklez!
How-To
The Configureable Block is crafted like this:
The dyes can be of any colour.
The first item of this mod is the Model Wrench.
It is used to open the model configuration gui:
That will result in this gui:
You can now select a preset model from the list on the left, adjust rotation, scale, light and boundingboxes, or add a new RenderElement to the current configuration.
The sliders are moved with the mouse. hold shift to make them snap to certain steps. Hover over them and use the left/right arrowkeys to move them by a small amount.
UPDATE:
From version 1.3.1(on MC1.7.2) or 1.2.3(on MC1.6.4) onwards, CTRL+Click will add the selected preset to the current config, instead of replacing it.
Furthermore, you'll find another textfield in the middle of the screen, aswell as a "Save" button. These allow you to save the current configuration under a name of your choice.
These saves are made locally, in your config folder. Due to this, they are available in all singleplayer worlds and probably even on MP servers you join.
The "Next Page" button is deactivated, because any page following this is a render element. On a freshly placed block, there are no render elements..
If you select a preset model now, however, it will become available.
After selecting "Stone Torch" and clicking "Next Page", you are presented with this:
You are in the configuration screen for one specific RenderElement now. It may look a bit overwhelming right now, but once you got the hand of it, it's quite easy to use.
The three textfields are use to set the model and texture of this element. The model path should refer to an OBJ model (more infos on that later). The texture path requires the formatting of a so called "ResourceLocation". The modders among you will know what that is. To those that don't: It refers to a resource used by Minecraft and consists of a domain and a filepath, connected by a ':'. Look at the preset models for an example.
Finally, the Model Part Name refers to the part of the model to render.
The "Pos Y" Slider controls the height offset of the part
The field next to it the X and Z offset.
The three "Rot." sliders control the rotation around the three axes.
The Colour sliders are pretty self explanatory, colouring the model with RGB values, ranging from 0 (black) to 255 (white).
Finally, the Alpha slider controls the opacity.
That will result in this gui:
You can now select a preset model from the list on the left, adjust rotation, scale, light and boundingboxes, or add a new RenderElement to the current configuration.
The sliders are moved with the mouse. hold shift to make them snap to certain steps. Hover over them and use the left/right arrowkeys to move them by a small amount.
UPDATE:
From version 1.3.1(on MC1.7.2) or 1.2.3(on MC1.6.4) onwards, CTRL+Click will add the selected preset to the current config, instead of replacing it.
Furthermore, you'll find another textfield in the middle of the screen, aswell as a "Save" button. These allow you to save the current configuration under a name of your choice.
These saves are made locally, in your config folder. Due to this, they are available in all singleplayer worlds and probably even on MP servers you join.
The "Next Page" button is deactivated, because any page following this is a render element. On a freshly placed block, there are no render elements..
If you select a preset model now, however, it will become available.
After selecting "Stone Torch" and clicking "Next Page", you are presented with this:
You are in the configuration screen for one specific RenderElement now. It may look a bit overwhelming right now, but once you got the hand of it, it's quite easy to use.
The textfields are use to set the model and texture of this element.
Both the model path and the texture path are set in the style of the ResourceLocation system which was altered in 1.7. Unlike in the 1.6.4 version of this mod, the domain is now required on the model as well, and for easier management, the domain fields are separate.
The model path should refer to an OBJ model (more infos on that later).
The texture path should refer to a .png file.
Look at the preset models for an example.
Finally, the Model Part Name refers to the part of the model to render.
The "Pos Y" Slider controls the height offset of the part
The field next to it the X and Z offset.
The three "Rot." sliders control the rotation around the three axes.
The Colour sliders are pretty self explanatory, colouring the model with RGB values, ranging from 0 (black) to 255 (white).
Finally, the Alpha slider controls the opacity.
The next Item is the Particle Spraycan.
It is used to configure the particles emitted by the block:
The opened gui looks like this:
This gui works pretty much like the model customization. Instead of RenderElements, it works with ParticleElements.
UPDATE:
From version 1.3.1(on MC1.7.2) or 1.2.3(on MC1.6.4) onwards, CTRL+Click will add the selected preset to the current config, instead of replacing it.
Furthermore, you'll find another textfield in the middle of the screen, aswell as a "Save" button. These allow you to save the current configuration under a name of your choice.
These saves are made locally, in your config folder. Due to this, they are available in all singleplayer worlds and probably even on MP servers you join.
You are presented with a list of preset configurations,
And this is the configuration for a specific ParticleElement. These are a bit more tricky in setting up, since they require the actual class path for a particle entity in Minecraft. Because of this, those who actually mod themselves or have taken a look at Minecrafts source might be at an advantage here.
For the more average consumers, I've compiled a lsit of the most commonly used vanilla particles:
Flame: net.minecraft.client.particle.EntityFlameFX
Smoke: net.minecraft.client.particle.EntitySmokeFX
Air Bubble: net.minecraft.client.particle.EntityBubbleFX
Firework Sparkle: net.minecraft.client.particle.EntityFireworkSparkFX
Heart (from taming/breeding): net.minecraft.client.particle.EntityHeartFX
Note: net.minecraft.client.particle.EntityNoteFX
Redstone: net.minecraft.client.particle.EntityReddustFX
The other options are the same as on RenderElements though:
The "Pos Y" Slider controls the height offset of the part
The field next to it the X and Z offset.
The three "Scale" slider control the scale of the particle (this is a bit derpy, but Minecraft is to blame for that)
The Colour sliders are pretty self explanatory, colouring the particle with RGB values, ranging from 0 (black) to 255 (white).
Finally, the Alpha slider controls the opacity.
Then we have the Adjustable Instructions:
Rightclick them on a configurable block to store the model and particle configurations on the item. Click them on another block to apply that configuration there. To clean the instructions, shift+rightclick.
The final Item in this mod are the Infinity Binoculars:
Click the block with them to toggle infinite render bounds. That means that your block will always be rendered, even if the bounding box is not in view. Note that this will obviously increase the load on your system.
Lastly, if you click the blocks with a chest in your hand, the chest will be integrated into the block, allowing it to function as an inventory. So the blocks don't just look good, but also have a little bit of practical use
Custom models
This is the special part of the mod:
Users can add their custom models either by different methods.
If you're a developer, you can simply create an addon for this mod. If you do that, you can even use the API to save your models as custom configurations in the preset list.
However, the use of a custom resourcepack will also allow you to make your own (or others) .obj files available to Minecraft. It's probably best to put these models and custom textures (yes you can add those too) in a subfolder of "assets". Preferably not inside "assets/minecraft"
Some things to keep in mind about custom obj files:
The Advanced Model Loader of forge is a bit picky about the models you parse it.
Your custom models may either have only triangular faces or rectangular. No more than 4 edges and no mixing. For optimal results, tell blender to triangulate the faces on export. That way nothing can go wrong (don't quote me on that xD )
Secondly, the parts of the obj model must not contain a '.' in their name. However, blender does that automatically. Adding just a second cube mesh results in the name Cube.001. Take care to rename them, or the model loader won't be able to parse them. I'd advise the use of underscores.
And lastly: Blender is a bit derpy, and considers two connected vertices (a line) a face. which means that your obj file may contain faces made up of only 2 vertices. Since these aren't really faces, the model loader doesn't like them. And while it may seem like a huge effort to open your .obj file in a texteditor and look for those 'fake'-faces, they are always at the bottom of the faces of each object, because blender sorts faces by the amount of vertices. These thankfully don't occur to often, ideally never, if you know what you're doing on modelling and you don't leave "residue" vertices.
Credits
Big thanks go to:
- "The Skype Guys" (you know who you are ;D) for criticism, suggestions and encouragement
- Minalien for his, sadly disappeared, tutorial on using Forge's Advanced Model Loader to get .obj files into the game
- Rorax for her tutorial on configuring Blender to create a Minecraft friendly model environments (Those blurred textures (mipmaps) drove me insane ;_; )
- The Slime Knights (Tinkers Construct dev team) because Packets are awful and their sourcecode was very helpful in understanding them
Bugs
If it does, however happen, please submit a bug report.
The most ideal way to do that is on my GitHub:
For 1.6.4
For 1.7.2
If you don't wanna do it there, post it in this thread, however I look here less than on GitHub.
Eitherway, make sure that you include in your report:
The Version of Minecraft, of Forge and the Crash Report (if you got one) aswell as other mods you installed.
Legal Stuff
This mod is licensed under Creative Commons 3.
Short Version: You are free to use this mod and it's code, but be so kind as to say where you got it ;D
Also, you are free to use this in any modpack.
Enjoy yourselves!
Well, making models is simply the ability to work with a 3D modelling program like Autodesk or Blender, something that is hard to tutor. It's like drawing actually, you can't really teach it^^
As for branching out: This mod is essentially considered finished. It is designed to be a very simple mod in its structure but with a lot of advanced configuration options. There is however, not much more to be done, other than possibly adding more preset configurations.
The future of this mod is up to the users and addon developers.
Forgot to mention that in the tutorial. Hold shift to move it in certain steps, their size depending on the slider (Y Rotation for instance moves in 22.5 degree steps) or hover your mouse over the slider and use the left and right arrowkey
1.7.2 version is up to v1.3.1
1.6.4 version is up to v1.2.3
Also, an excellent spotlight by CaptainSparklez:
But goodness gracious! I don't have to go in and learn Java coding + Minecraft's Forge coding structure to make a freakin custom rendered block (even though the source and api is right there) anymore. And I HATE Techne for it's unintuitive, gui-less viewport and... everything if compared to Blender/3DS Max! So making custom rendered "anything" felt like a distant and impossible dream. Unless it was for an entity with animations. Anyway-
Then you come along and pretty much solved all my dilemma of hoping to see an actual water bucket rendered and sitting on the ground in any size the scale bar will let it be. My 3D learning of Blender and 3DS max won't go to waste anymore... Thank you so much for this! This mod is a 3D artist's OBJ-file-type dream for Minecraft! Time to re-dabble in the world of 3D modeling, alongside Minecraft. Seriously, thanks for this.
While this isn't too much of an issue that affects the aesthetic value of the loaded object (the point of this mod), it kind of makes the spray can useless to use. For the 1.6.4 version at least.
The 1.7.2 version however, works perfect with no crashes.
It's an odd thing I guess. Any quick fix's to it?
---- Minecraft Crash Report ----
// Ooh. Shiny.
Time: 6/9/14 5:39 PM
Description: Updating screen events
java.lang.ClassCastException: bludecorations.client.GuiPresetParticleList cannot be cast to bludecorations.client.GuiPresetModelList
at bludecorations.client.GuiParticleCustomization.func_73875_a(GuiParticleCustomization.java:288)
at net.minecraft.client.gui.GuiScreen.func_73864_a(SourceFile:69)
at bludecorations.client.GuiParticleCustomization.func_73864_a(GuiParticleCustomization.java:154)
at net.minecraft.client.gui.GuiScreen.func_73867_d(SourceFile:128)
at net.minecraft.client.gui.GuiScreen.func_73862_m(SourceFile:107)
at net.minecraft.client.Minecraft.func_71407_l(Minecraft.java:1566)
at net.minecraft.client.Minecraft.func_71411_J(Minecraft.java:910)
at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:838)
at net.minecraft.client.main.Main.main(SourceFile:101)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at net.minecraft.launchwrapper.Launch.launch(Launch.java:131)
at net.minecraft.launchwrapper.Launch.main(Launch.java:27)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.multimc.onesix.OneSixLauncher.launch(OneSixLauncher.java:214)
at org.multimc.EntryPoint.listen(EntryPoint.java:165)
at org.multimc.EntryPoint.main(EntryPoint.java:54)
A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------
-- Head --
Stacktrace:
at bludecorations.client.GuiParticleCustomization.func_73875_a(GuiParticleCustomization.java:288)
at net.minecraft.client.gui.GuiScreen.func_73864_a(SourceFile:69)
at bludecorations.client.GuiParticleCustomization.func_73864_a(GuiParticleCustomization.java:154)
at net.minecraft.client.gui.GuiScreen.func_73867_d(SourceFile:128)
at net.minecraft.client.gui.GuiScreen.func_73862_m(SourceFile:107)
-- Affected screen --
Details:
Screen name: bludecorations.client.GuiParticleCustomization
-- Affected level --
Details:
Level name: MpServer
All players: 1 total; [EntityClientPlayerMP['xSquishy3x'/252, l='MpServer', x=35.09, y=71.62, z=190.47]]
Chunk stats: MultiplayerChunkCache: 441
Level seed: 0
Level generator: ID 00 - default, ver 1. Features enabled: false
Level generator options:
Level spawn location: World: (24,64,156), Chunk: (at 8,4,12 in 1,9; contains blocks 16,0,144 to 31,255,159), Region: (0,0; contains chunks 0,0 to 31,31, blocks 0,0,0 to 511,255,511)
Level time: 4491 game time, 4491 day time
Level dimension: 0
Level storage version: 0x00000 - Unknown?
Level weather: Rain time: 0 (now: false), thunder time: 0 (now: false)
Level game mode: Game mode: creative (ID 1). Hardcore: false. Cheats: false
Forced entities: 76 total; [EntitySpider['Spider'/139, l='MpServer', x=29.47, y=17.99, z=142.50], EntityWolf['Wolf'/141, l='MpServer', x=27.69, y=68.00, z=153.94], EntitySkeleton['Skeleton'/140, l='MpServer', x=19.91, y=16.00, z=144.34], EntityBat['Bat'/143, l='MpServer', x=13.28, y=26.00, z=166.44], EntityItem['item.tile.sapling.oak'/142, l='MpServer', x=16.28, y=70.13, z=156.88], EntityCreeper['Creeper'/152, l='MpServer', x=27.50, y=38.00, z=259.50], EntitySkeleton['Skeleton'/153, l='MpServer', x=25.94, y=39.00, z=254.50], EntitySkeleton['Skeleton'/156, l='MpServer', x=43.50, y=38.00, z=124.50], EntityEnderman['Enderman'/157, l='MpServer', x=30.34, y=16.00, z=139.88], EntityWolf['Wolf'/158, l='MpServer', x=39.06, y=69.00, z=150.53], EntityEnderman['Enderman'/159, l='MpServer', x=36.75, y=17.00, z=199.78], EntityZombie['Zombie'/144, l='MpServer', x=25.88, y=28.00, z=178.50], EntityZombie['Zombie'/145, l='MpServer', x=29.06, y=19.00, z=213.50], EntityZombie['Zombie'/146, l='MpServer', x=24.50, y=56.00, z=217.50], EntitySpider['Spider'/147, l='MpServer', x=19.91, y=16.00, z=230.63], EntityZombie['Zombie'/148, l='MpServer', x=16.50, y=55.00, z=248.50], EntitySkeleton['Skeleton'/150, l='MpServer', x=23.50, y=41.00, z=266.50], EntitySkeleton['Skeleton'/151, l='MpServer', x=25.50, y=41.00, z=267.50], EntitySkeleton['Skeleton'/171, l='MpServer', x=51.69, y=56.00, z=254.69], EntityBat['Bat'/170, l='MpServer', x=50.63, y=36.10, z=250.34], EntityCreeper['Creeper'/169, l='MpServer', x=53.09, y=16.00, z=251.31], EntityCreeper['Creeper'/168, l='MpServer', x=48.84, y=28.00, z=165.66], EntityBat['Bat'/175, l='MpServer', x=49.70, y=34.88, z=271.67], EntityCreeper['Creeper'/174, l='MpServer', x=48.00, y=25.00, z=257.59], EntitySkeleton['Skeleton'/173, l='MpServer', x=47.09, y=56.00, z=246.50], EntitySkeleton['Skeleton'/172, l='MpServer', x=50.88, y=56.00, z=253.88], EntityZombie['Zombie'/163, l='MpServer', x=37.13, y=36.00, z=257.56], EntityZombie['Zombie'/162, l='MpServer', x=45.91, y=17.00, z=251.50], EntitySkeleton['Skeleton'/161, l='MpServer', x=44.47, y=21.00, z=209.06], EntityZombie['Zombie'/160, l='MpServer', x=32.41, y=16.00, z=207.97], EntitySkeleton['Skeleton'/167, l='MpServer', x=59.72, y=19.00, z=145.50], EntityBat['Bat'/166, l='MpServer', x=42.56, y=19.02, z=175.39], EntityCreeper['Creeper'/186, l='MpServer', x=88.50, y=57.00, z=217.50], EntityZombie['Zombie'/187, l='MpServer', x=83.47, y=19.00, z=230.97], EntityZombie['Zombie'/184, l='MpServer', x=92.50, y=21.00, z=166.50], EntityZombie['Zombie'/185, l='MpServer', x=88.41, y=26.00, z=185.00], EntityZombie['Zombie'/190, l='MpServer', x=83.50, y=20.00, z=246.50], EntityZombie['Zombie'/191, l='MpServer', x=87.50, y=20.00, z=248.50], EntityZombie['Zombie'/188, l='MpServer', x=82.38, y=19.00, z=231.31], EntitySkeleton['Skeleton'/189, l='MpServer', x=93.50, y=17.00, z=233.06], EntityBat['Bat'/59, l='MpServer', x=-47.50, y=38.00, z=157.75], EntityCreeper['Creeper'/182, l='MpServer', x=75.59, y=17.00, z=116.00], EntityZombie['Zombie'/183, l='MpServer', x=91.50, y=21.00, z=170.50], EntityCreeper['Creeper'/180, l='MpServer', x=95.63, y=15.00, z=122.34], EntitySkeleton['Skeleton'/181, l='MpServer', x=92.69, y=19.00, z=120.69], EntityCreeper['Creeper'/201, l='MpServer', x=91.75, y=19.00, z=119.72], EntityCreeper['Creeper'/203, l='MpServer', x=100.50, y=23.00, z=173.50], EntitySkeleton['Skeleton'/202, l='MpServer', x=86.91, y=15.00, z=169.75], EntityZombie['Zombie'/79, l='MpServer', x=-22.38, y=26.00, z=184.97], EntityChicken['Chicken'/74, l='MpServer', x=-44.56, y=64.00, z=262.56], EntityBat['Bat'/216, l='MpServer', x=110.63, y=20.02, z=133.50], EntitySpider['Spider'/217, l='MpServer', x=115.30, y=19.47, z=136.47], EntityZombie['Zombie'/80, l='MpServer', x=-17.50, y=25.00, z=192.50], EntityBat['Bat'/218, l='MpServer', x=103.30, y=27.73, z=139.65], EntitySquid['Squid'/93, l='MpServer', x=-5.50, y=57.31, z=214.50], EntitySquid['Squid'/92, l='MpServer', x=-3.50, y=58.00, z=213.94], EntitySquid['Squid'/95, l='MpServer', x=-6.50, y=58.34, z=207.69], EntitySquid['Squid'/94, l='MpServer', x=-5.47, y=60.28, z=206.72], EntityCreeper['Creeper'/89, l='MpServer', x=-10.31, y=24.00, z=175.13], EntityCreeper['Creeper'/88, l='MpServer', x=-11.84, y=24.00, z=173.31], EntitySquid['Squid'/91, l='MpServer', x=-10.72, y=57.72, z=221.69], EntityItem['item.item.seeds'/90, l='MpServer', x=-2.06, y=63.13, z=200.53], EntitySkeleton['Skeleton'/98, l='MpServer', x=-9.50, y=38.00, z=270.50], EntityItem['item.tile.gravel'/96, l='MpServer', x=-14.13, y=11.13, z=252.13], EntityCreeper['Creeper'/232, l='MpServer', x=114.50, y=17.00, z=260.50], EntityItem['item.tile.gravel'/97, l='MpServer', x=-15.88, y=11.13, z=253.84], EntityItem['item.tile.mushroom'/119, l='MpServer', x=7.81, y=44.13, z=254.16], EntityItem['item.tile.sapling.oak'/118, l='MpServer', x=1.88, y=67.13, z=188.38], EntityBat['Bat'/117, l='MpServer', x=12.53, y=23.10, z=168.25], EntityClientPlayerMP['xSquishy3x'/252, l='MpServer', x=35.09, y=71.62, z=190.47], EntityCreeper['Creeper'/116, l='MpServer', x=6.50, y=22.00, z=163.50], EntityBat['Bat'/115, l='MpServer', x=3.00, y=23.10, z=167.22], EntitySpider['Spider'/114, l='MpServer', x=16.22, y=19.00, z=170.56], EntityItem['item.tile.sapling.oak'/354, l='MpServer', x=-17.13, y=68.13, z=203.06], EntityCreeper['Creeper'/113, l='MpServer', x=11.84, y=21.00, z=158.38], EntityItem['item.tile.mushroom'/120, l='MpServer', x=15.19, y=42.13, z=254.09]]
Retry entities: 0 total; []
Server brand: fml,forge
Server type: Integrated singleplayer server
Stacktrace:
at net.minecraft.client.multiplayer.WorldClient.func_72914_a(WorldClient.java:440)
at net.minecraft.client.Minecraft.func_71396_d(Minecraft.java:2312)
at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:856)
at net.minecraft.client.main.Main.main(SourceFile:101)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at net.minecraft.launchwrapper.Launch.launch(Launch.java:131)
at net.minecraft.launchwrapper.Launch.main(Launch.java:27)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.multimc.onesix.OneSixLauncher.launch(OneSixLauncher.java:214)
at org.multimc.EntryPoint.listen(EntryPoint.java:165)
at org.multimc.EntryPoint.main(EntryPoint.java:54)
-- System Details --
Details:
Minecraft Version: 1.6.4
Operating System: Windows 7 (amd64) version 6.1
Java Version: 1.7.0_60, Oracle Corporation
Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
Memory: 390598608 bytes (372 MB) / 652214272 bytes (622 MB) up to 954728448 bytes (910 MB)
JVM Flags: 3 total; -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump -Xms512m -Xmx1024m
AABB Pool Size: 5638 (315728 bytes; 0 MB) allocated, 2 (112 bytes; 0 MB) used
Suspicious classes: FML and Forge are installed
IntCache: cache: 0, tcache: 0, allocated: 3, tallocated: 63
FML: MCP v8.11 FML v6.4.49.965 Minecraft Forge 9.11.1.965 4 mods loaded, 4 mods active
mcp{8.09} [Minecraft Coder Pack] (minecraft.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
FML{6.4.49.965} [Forge Mod Loader] (minecraftforge-9.11.1.965.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
Forge{9.11.1.965} [Minecraft Forge] (minecraftforge-9.11.1.965.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
bludecorations{1.2.3} [BluDecorations] (BluDecorations-1.6.4-1.2.3.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
Launched Version: 1.6.4
LWJGL: 2.9.0
OpenGL: GeForce GTX 770/PCIe/SSE2 GL version 4.4.0, NVIDIA Corporation
Is Modded: Definitely; Client brand changed to 'fml,forge'
Type: Client (map_client.txt)
Resource Pack: Default
Current Language: English (US)
Profiler Position: N/A (disabled)
Vec3 Pool Size: 1976 (110656 bytes; 0 MB) allocated, 16 (896 bytes; 0 MB) used
It existed in both versions, no idea why it didn't happen in your 1.7.2 test.
As for the particle configurations vanishing on relogging:
I was unable to replicate that bug, I'll need more information on that.
Updated downloads:
1.6.4
1.7.2
I have also tried to replicate that vanishing bug (only on ver 1.6.4) but... I honestly think it's just my MultiMC setup. On one clean instance (1.6.4), it works fine and on another instance (with other mods installed) the particles vanish or default. However, this kind of derpyness has happened to other type mods I installed and tested before (same scenario in 1.6.4), where any custom rendered block would only face one direction when I placed them down (I think it was the Electrodynamics mod by CyanideX), even if the mod was installed on a forge instance with other mods removed except that mod. But not when installed on a fresh and new instance with no doodling to the MC settings. Weird eh?
Anyway I guess I'll go bug hunting for that and try to see if I run into any other odd things. Everything is so far so good though! Thanks!
Take a good look at the section "Custom Models" in the OP. Either add it via the resource pack system (somewhere inside /assets, create a folder named mycustommodels or something...), or write an addon mod using the API and place it in the mods resources.
HAVE SOME s !
I'm guessing, this mod will probably gain much more attention (as it should because it can load freakin custom obj's! For Forge servers that is virtually unlimited creativity), if it had that sort of, duo prowess in being able to load OBJ's and Java/Techne models. Why would that matter if a box in OBJ is still a box in shape in Java? I honestly have no clue. Just a thought. Techne is the popular program to use for Minecraftians and modders because of it's java spitting powers. If the gap between OBJ's and Java file types was bridged, oh the wonders.
Another question: will animations ever be supported in the future? Not anything complex like a flying dragon, but like a simple animation similar the chest animation or a rotating/orbiting/blinking animation. Or even better, a right-click that changes the model/texture/particle to another set model/texture/particle. For example, you modeled a closed wardrobe and right click it (or whatever preset button) and it switches it's model to an opened version. Right click it again and you go into the chest gui, if you added a chest to the second model of course. Then right click it again and it reverts to the first model. Just a thought.
Hate to necro.. but this mod needs the attention. Holy freeking crow... this mod is amazing! What better way to make
giant penisesdelapidated buildings complete with destroyed chests, than this mod! Blu, please don't abandon this... I havn't tested it, so I don't know if it does or doesn't work in 7.10, but maybe you could still look back t the code. Who knows! There might be alot of optimizations and even features that you could addAnd I'm sure that, (once this thread has been bumped to the top of the mod list in the forums) tens, maybe twenties of people will start posting "can you update for 1.8" or "Is this compatable with 1.7.10?" (to those of you who ask that last one, add this mod, make a new world, if your minecraft doesn't explode when you boot up and make a new world, then yes, it is compatible)
It works fr 1.7.10. I wrote it back when the switch from 1.6 was made, so I released it for both.
It does /not/ work with 1.8, because renderign in 1.8 is way different. I also haven'T touched 1.8 at all, and don't intend to for now.
This mod is kinda "done" for me. I fixed all the bugs that popped up and let it rest, sicne I consider it my weakest work.