Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

[1.9] Render custom item


TPD
 Share

Recommended Posts

  • Replies 95
  • Created
  • Last Reply

Top Posters In This Topic

I'm pretty sure you need to use the new JSON model system or IBakedModels. I have found no tutorials on either of these.

VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING

I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect.

Forge and vanilla BlockState generator.

Link to comment
Share on other sites

You could read diesiebens 2nd response and that may answer your question.

http://www.minecraftforge.net/forum/index.php/topic,39203.0/wap2.html

VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING

I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect.

Forge and vanilla BlockState generator.

Link to comment
Share on other sites

Is it possible to cancel the rendering of only the item in one Hand during 'RenderHandEvent'/are there also events that get fired for each Hand independently?

 

If not, is there a reliable way to render the item in a hand?

Link to comment
Share on other sites

Why was IItemRenderer removed?

The mod that I'm working on is FlansMod. I want to update it to 1.10 but it has it's own way of rendering things and the models and animations of all weapons and vehicles are made with this system. It's probably not possible to implement IModel / IBakedModel to this...

Link to comment
Share on other sites

Ok. This means I will use the new system.

 

I still don't exactly understand how IModel and IBakedModel are implemented. I can try to explain how the current Model system works, maybe you know how I could implement it.

 

This is a (very simplified) schematic where I try to explain how it works:

tJk2Qmj.png

 

This is for example what the Model class of a gun looks like:

[spoiler=ModelM9.java]


public class ModelM9 extends ModelGun 
{
public ModelM9()
{
	int textureX = 32;
	int textureY = 16;

	gunModel = new ModelRendererTurbo[3];

	gunModel[0] = new ModelRendererTurbo(this, 0, 0, textureX, textureY);
	gunModel[0].addBox(-1F, -2F, -1F, 3, 4, 2);

	gunModel[1] = new ModelRendererTurbo(this, 0, 6, textureX, textureY);
	gunModel[1].addBox(-1F, 2F, -1F, 8, 1, 2);

	gunModel[2] = new ModelRendererTurbo(this, 0, 9, textureX, textureY);
	gunModel[2].addBox(-0.5F, 3.5F, -0.5F, 8, 1, 1);

	slideModel = new ModelRendererTurbo[3];

	slideModel[0] = new ModelRendererTurbo(this, 0, 12, textureX, textureY);
	slideModel[0].addBox(-1F, 3F, -1F, 8, 2, 2);

	slideModel[1] = new ModelRendererTurbo(this, 10, 2, textureX, textureY);
	slideModel[1].addBox(5.95F, 4.5F, -0.5F, 1, 1, 1);

	slideModel[2] = new ModelRendererTurbo(this, 8, 0, textureX, textureY);
	slideModel[2].addBox(-0.8F, 4.5F, -0.5F, 1, 1, 1);

	ammoModel = new ModelRendererTurbo[1];

	ammoModel[0] = new ModelRendererTurbo(this, 14, 0, textureX, textureY);
	ammoModel[0].addBox(-0.5F, -1.8F, -0.5F, 2, 4, 1);

	barrelAttachPoint = new Vector3f(7.5F / 16F, 4F / 16F, 0F);

	scopeAttachPoint = new Vector3f(3F / 16F, 5F / 16F, 0F);
	scopeIsOnSlide = true;

	gunSlideDistance = 0.25F;
	animationType = EnumAnimationType.PISTOL_CLIP;
}
}

 

 

Here's the source of the mod: https://github.com/gitgud-software/FlansMod

(changes to the mod made by me are not yet committed, but I can commit them if you need the code; I fixed the compiler errors and started fixing bugs)

 

 

Link to comment
Share on other sites

Basically you have to start over.

Make the models in a proper model editor and export them as obj files. Forge will happily load them.

Or you can write a custom model loader (ICustomModelLoader) to add support for a different file type.

 

IModel is basically an unoptimized representation of your model, containing the information like it was read from the model file on disk.

IBakedModel is the form that can actually be rendered and is basically just a list of BakedQuads, where BakedQuad is the vertex information for one quad of the model.

Link to comment
Share on other sites

The mod adds many different items for which I need different ICustomModelLoaders. How should I determine whether or not the ICustomLoader accepts it when I just have a ResourceLocation?

 

Edit: nvm. that was a stupid question. I can just add a folder called guns in assets/flansmod/models/item right?

Link to comment
Share on other sites

I'm not sure if it's possible to use the same format for each kind of item... Guns should consist of multiple parts that will have to be moved independently during reloading-animations and so on, but Plane-Models, for example, have other properties...

Link to comment
Share on other sites

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
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.

 Share




  • Recently Browsing

    No registered users viewing this page.

  • Posts

    • thats exactly what i did, didnt work
    • performance problems?, i saw that the pumpkin overlay's size is 256x256, then how it draws in full screen?
    • ---- Minecraft Crash Report ---- // I bet Cylons wouldn't have this problem. Time: 1/25/22 3:30 PM Description: Rendering overlay net.minecraftforge.fml.config.ConfigFileTypeHandler$ConfigLoadingException: Failed loading config file forge-common.toml of type COMMON for modid forge     at net.minecraftforge.fml.config.ConfigFileTypeHandler.lambda$reader$1(ConfigFileTypeHandler.java:61) ~[?:?] {re:classloading}     at net.minecraftforge.fml.config.ConfigFileTypeHandler$$Lambda$4733/78604773.apply(Unknown Source) ~[?:?] {}     at net.minecraftforge.fml.config.ConfigTracker.openConfig(ConfigTracker.java:104) ~[?:?] {re:classloading}     at net.minecraftforge.fml.config.ConfigTracker.lambda$loadConfigs$1(ConfigTracker.java:83) ~[?:?] {re:classloading}     at net.minecraftforge.fml.config.ConfigTracker$$Lambda$4732/324662817.accept(Unknown Source) ~[?:?] {}     at java.lang.Iterable.forEach(Iterable.java:75) ~[?:1.8.0_51] {}     at java.util.Collections$SynchronizedCollection.forEach(Collections.java:2062) ~[?:1.8.0_51] {}     at net.minecraftforge.fml.config.ConfigTracker.loadConfigs(ConfigTracker.java:83) ~[?:?] {re:classloading}     at net.minecraftforge.fml.ModLoader.loadMods(ModLoader.java:209) ~[?:?] {re:classloading}     at net.minecraftforge.fml.client.ClientModLoader.lambda$startModLoading$7(ClientModLoader.java:132) ~[?:?] {re:classloading,pl:runtimedistcleaner:A}     at net.minecraftforge.fml.client.ClientModLoader$$Lambda$4722/1128558020.run(Unknown Source) ~[?:?] {}     at net.minecraftforge.fml.client.ClientModLoader.lambda$createRunnableWithCatch$4(ClientModLoader.java:123) ~[?:?] {re:classloading,pl:runtimedistcleaner:A}     at net.minecraftforge.fml.client.ClientModLoader$$Lambda$2917/1825071442.run(Unknown Source) ~[?:?] {}     at net.minecraftforge.fml.client.ClientModLoader.startModLoading(ClientModLoader.java:132) ~[?:?] {re:classloading,pl:runtimedistcleaner:A}     at net.minecraftforge.fml.client.ClientModLoader.lambda$onResourceReload$2(ClientModLoader.java:114) ~[?:?] {re:classloading,pl:runtimedistcleaner:A}     at net.minecraftforge.fml.client.ClientModLoader$$Lambda$4719/1991615833.run(Unknown Source) ~[?:?] {}     at net.minecraftforge.fml.client.ClientModLoader.lambda$createRunnableWithCatch$4(ClientModLoader.java:123) ~[?:?] {re:classloading,pl:runtimedistcleaner:A}     at net.minecraftforge.fml.client.ClientModLoader$$Lambda$2917/1825071442.run(Unknown Source) ~[?:?] {}     at java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1618) ~[?:1.8.0_51] {}     at java.util.concurrent.CompletableFuture$AsyncRun.exec(CompletableFuture.java:1610) ~[?:1.8.0_51] {}     at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289) ~[?:1.8.0_51] {}     at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056) ~[?:1.8.0_51] {}     at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1689) ~[?:1.8.0_51] {}     at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157) ~[?:1.8.0_51] {} Caused by: com.electronwill.nightconfig.core.io.ParsingException: Not enough data available     at com.electronwill.nightconfig.core.io.ParsingException.notEnoughData(ParsingException.java:22) ~[core-3.6.3.jar:?] {}     at com.electronwill.nightconfig.core.io.ReaderInput.directReadChar(ReaderInput.java:36) ~[core-3.6.3.jar:?] {}     at com.electronwill.nightconfig.core.io.AbstractInput.readChar(AbstractInput.java:49) ~[core-3.6.3.jar:?] {}     at com.electronwill.nightconfig.core.io.AbstractInput.readCharsUntil(AbstractInput.java:123) ~[core-3.6.3.jar:?] {}     at com.electronwill.nightconfig.toml.TableParser.parseKey(TableParser.java:166) ~[toml-3.6.3.jar:?] {}     at com.electronwill.nightconfig.toml.TableParser.parseDottedKey(TableParser.java:145) ~[toml-3.6.3.jar:?] {}     at com.electronwill.nightconfig.toml.TableParser.parseNormal(TableParser.java:55) ~[toml-3.6.3.jar:?] {}     at com.electronwill.nightconfig.toml.TomlParser.parse(TomlParser.java:44) ~[toml-3.6.3.jar:?] {}     at com.electronwill.nightconfig.toml.TomlParser.parse(TomlParser.java:37) ~[toml-3.6.3.jar:?] {}     at com.electronwill.nightconfig.core.io.ConfigParser.parse(ConfigParser.java:113) ~[core-3.6.3.jar:?] {}     at com.electronwill.nightconfig.core.io.ConfigParser.parse(ConfigParser.java:219) ~[core-3.6.3.jar:?] {}     at com.electronwill.nightconfig.core.io.ConfigParser.parse(ConfigParser.java:202) ~[core-3.6.3.jar:?] {}     at com.electronwill.nightconfig.core.file.WriteSyncFileConfig.load(WriteSyncFileConfig.java:73) ~[core-3.6.3.jar:?] {}     at com.electronwill.nightconfig.core.file.AutosaveCommentedFileConfig.load(AutosaveCommentedFileConfig.java:85) ~[core-3.6.3.jar:?] {}     at net.minecraftforge.fml.config.ConfigFileTypeHandler.lambda$reader$1(ConfigFileTypeHandler.java:57) ~[?:?] {re:classloading}     ... 23 more A detailed walkthrough of the error, its code path and all known details is as follows: --------------------------------------------------------------------------------------- -- Head -- Thread: Render thread Stacktrace:     at net.minecraftforge.fml.config.ConfigFileTypeHandler.lambda$reader$1(ConfigFileTypeHandler.java:61) ~[?:?] {re:classloading}     at net.minecraftforge.fml.config.ConfigFileTypeHandler$$Lambda$4733/78604773.apply(Unknown Source) ~[?:?] {}     at net.minecraftforge.fml.config.ConfigTracker.openConfig(ConfigTracker.java:104) ~[?:?] {re:classloading}     at net.minecraftforge.fml.config.ConfigTracker.lambda$loadConfigs$1(ConfigTracker.java:83) ~[?:?] {re:classloading}     at net.minecraftforge.fml.config.ConfigTracker$$Lambda$4732/324662817.accept(Unknown Source) ~[?:?] {}     at java.lang.Iterable.forEach(Iterable.java:75) ~[?:1.8.0_51] {}     at java.util.Collections$SynchronizedCollection.forEach(Collections.java:2062) ~[?:1.8.0_51] {}     at net.minecraftforge.fml.config.ConfigTracker.loadConfigs(ConfigTracker.java:83) ~[?:?] {re:classloading}     at net.minecraftforge.fml.ModLoader.loadMods(ModLoader.java:209) ~[?:?] {re:classloading} -- Overlay render details -- Details:     Overlay name: net.minecraft.client.gui.ResourceLoadProgressGui Stacktrace:     at net.minecraft.client.renderer.GameRenderer.func_195458_a(GameRenderer.java:484) ~[?:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}     at net.minecraft.client.Minecraft.func_195542_b(Minecraft.java:977) [?:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}     at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:607) [?:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}     at net.minecraft.client.main.Main.main(Main.java:184) [?:?] {re:classloading,pl:runtimedistcleaner:A}     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_51] {}     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_51] {}     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_51] {}     at java.lang.reflect.Method.invoke(Method.java:497) ~[?:1.8.0_51] {}     at net.minecraftforge.fml.loading.FMLClientLaunchProvider.lambda$launchService$0(FMLClientLaunchProvider.java:51) [forge-1.16.5-36.2.22.jar:36.2] {}     at net.minecraftforge.fml.loading.FMLClientLaunchProvider$$Lambda$459/1573125303.call(Unknown Source) [forge-1.16.5-36.2.22.jar:36.2] {}     at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:37) [modlauncher-8.0.9.jar:?] {}     at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:54) [modlauncher-8.0.9.jar:?] {}     at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:72) [modlauncher-8.0.9.jar:?] {}     at cpw.mods.modlauncher.Launcher.run(Launcher.java:82) [modlauncher-8.0.9.jar:?] {}     at cpw.mods.modlauncher.Launcher.main(Launcher.java:66) [modlauncher-8.0.9.jar:?] {}  
    • "Required" in the sense that it's the correct way to do things to maintain mod compatibility. But loot tables are still loot tables and can still be overridden with data packs. Forge won't stop you from doing it.
    • Hi all, First post here. I have tried to solve this myself but I can't identify the problem. I used to use version 1.16.3 and in the console I was able to press up and down to access commands in the history and tab for auto completion of the command. Now I upgraded to version 1.17.1 and I these keys don't work anymore. How can I enable auto complete? Thanks. System info: MinecraftForge version 37.1.1 Minecraft 1.17.1 with MCP 20210706. OS: Ubuntu 20.04.3 openjdk 17.0.1 2021-10-19 OpenJDK Runtime Environment (build 17.0.1+12-Ubuntu-120.04)
  • Topics

  • Who's Online (See full list)

×
×
  • Create New...

Important Information

By using this site, you agree to our Privacy Policy.