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

[1.8.9] Render armour on player without item


Wehavecookies56
 Share

Recommended Posts

Hello, I am trying to render a model over the player similar to armour but cannot align the position of the models with the player. I have been using ModelBiped but would much rather be able to use the armour model. I cannot figure out how to render it in the same position as the player while also rotating it with the player.

What I ultimately want to achieve is to render armour on the player with my textures while keeping the player rendered underneath.

So I have 2 questions.

How can I align the model with the player?

How can I render the armour model rather than player model?

I am using PlayerRenderEvent.Post to render it, here's the code.

        @SubscribeEvent
public void onRenderPlayer(RenderPlayerEvent.Post event){
	Minecraft mc = Minecraft.getMinecraft();
	ModelBiped main = event.renderer.getMainModel();
	ModelBiped drive = new ModelBiped();

	float base = 0.0625f;

	GL11.glPushMatrix();

	mc.renderEngine.bindTexture(new ResourceLocation("kk:textures/armour/Valor_A.png"));

	//Body and arms
	ModelBiped.copyModelAngles(main.bipedBody, drive.bipedBody);
	ModelBiped.copyModelAngles(main.bipedLeftArm, drive.bipedLeftArm);
	ModelBiped.copyModelAngles(main.bipedRightArm, drive.bipedRightArm);

	drive.bipedBody.render(base);
	drive.bipedLeftArm.render(base);
	drive.bipedRightArm.render(base);

	//Legs
	mc.renderEngine.bindTexture(new ResourceLocation("kk:textures/armour/Valor_B.png"));

	ModelBiped.copyModelAngles(main.bipedLeftLeg, drive.bipedLeftLeg);
	ModelBiped.copyModelAngles(main.bipedRightLeg, drive.bipedRightLeg);

	drive.bipedLeftLeg.render(base);
	drive.bipedRightLeg.render(base);

	GL11.glPopMatrix();
}

 

This produces:

I3e1Y3f.png

 

It looks fine it's just upside down and doesn't rotate with the player. Although the arms and legs move when walking.

I'm clearly doing something wrong or have missed out something.

 

Any help is appreciated, thanks.

Link to comment
Share on other sites

Wait, so to get this straight you are making a set of armor? Or what exactly are you making?

I Love To Help People. Unless They Are The Kind Of People Who Just Doesn't Know Anything. Those People Need Some Serious Help. This Could Help But......

https://www.youtube.com/watch?v=6t0GlXWx_PY

 

ThingsMod Git: https://github.com/EscapeMC/Things-Mod-1.10.2

 

TeamMadness Mod Git: https://github.com/EscapeMC/TeamMadness-Mod-1.10.2

 

If I somehow help you, please click the "Thank You" button. If I am a total waste of time, please click the "Applaud" button.

Link to comment
Share on other sites

Well, I am not sure about the turning part, but the part about the upside-down-ness may be able to be fixed if in the texture itself, you may want to flip it 180°, and therefore solving that

I Love To Help People. Unless They Are The Kind Of People Who Just Doesn't Know Anything. Those People Need Some Serious Help. This Could Help But......

https://www.youtube.com/watch?v=6t0GlXWx_PY

 

ThingsMod Git: https://github.com/EscapeMC/Things-Mod-1.10.2

 

TeamMadness Mod Git: https://github.com/EscapeMC/TeamMadness-Mod-1.10.2

 

If I somehow help you, please click the "Thank You" button. If I am a total waste of time, please click the "Applaud" button.

Link to comment
Share on other sites

Well, I am not sure about the turning part, but the part about the upside-down-ness may be able to be fixed if in the texture itself, you may want to flip it 180°, and therefore solving that

 

While that kinda would solve that, the legs are rendered above the body which suggests it is rendering the models upside down.

Link to comment
Share on other sites

sounds like u need to do some kind of GL rotating, not rotating the texture

 

I tried doing that, the problem is getting it perfectly aligned with the player.

I have some really bad memories associated with aligning models with players...

I was rendering a .obj model as a sword and it was hard. I had to change a number than restart minecraft. Till I found the perfect match. It was a painstaking process that took a long time.

Then after I finished spending hours on trying to align it, I found out that in debugging mode, it will change it without you having to restart minecraft. So, just run it in debug mode and try looking for the perfect numbers.

 

 

 

I'm back from being gone for... I think its been about a year. I'm pretty sure nobody remembers me, but hello anybody who does!

Link to comment
Share on other sites

sounds like u need to do some kind of GL rotating, not rotating the texture

 

I tried doing that, the problem is getting it perfectly aligned with the player.

I have some really bad memories associated with aligning models with players...

I was rendering a .obj model as a sword and I just to keep on trying with different numbers and then restart minecraft, till I found the perfect match. It was a painstaking process that took a long time.

Then after I finished spending hours on trying to align it, I found out that in debugging mode, it will change it without you having to restart minecraft. So, just run it in debug mode and try looking for the perfect numbers, till its aligned with the player.

 

But even if I do this it does not rotate with the player so it would be misaligned as soon as I move.

Link to comment
Share on other sites

  • 3 years later...
On 1/31/2016 at 10:09 AM, Wehavecookies56 said:

Hello, I am trying to render a model over the player similar to armour but cannot align the position of the models with the player. I have been using ModelBiped but would much rather be able to use the armour model. I cannot figure out how to render it in the same position as the player while also rotating it with the player.

What I ultimately want to achieve is to render armour on the player with my textures while keeping the player rendered underneath.

So I have 2 questions.

How can I align the model with the player?

How can I render the armour model rather than player model?

I am using PlayerRenderEvent.Post to render it, here's the code.

 


        @SubscribeEvent
public void onRenderPlayer(RenderPlayerEvent.Post event){
	Minecraft mc = Minecraft.getMinecraft();
	ModelBiped main = event.renderer.getMainModel();
	ModelBiped drive = new ModelBiped();

	float base = 0.0625f;

	GL11.glPushMatrix();

	mc.renderEngine.bindTexture(new ResourceLocation("kk:textures/armour/Valor_A.png"));

	//Body and arms
	ModelBiped.copyModelAngles(main.bipedBody, drive.bipedBody);
	ModelBiped.copyModelAngles(main.bipedLeftArm, drive.bipedLeftArm);
	ModelBiped.copyModelAngles(main.bipedRightArm, drive.bipedRightArm);

	drive.bipedBody.render(base);
	drive.bipedLeftArm.render(base);
	drive.bipedRightArm.render(base);

	//Legs
	mc.renderEngine.bindTexture(new ResourceLocation("kk:textures/armour/Valor_B.png"));

	ModelBiped.copyModelAngles(main.bipedLeftLeg, drive.bipedLeftLeg);
	ModelBiped.copyModelAngles(main.bipedRightLeg, drive.bipedRightLeg);

	drive.bipedLeftLeg.render(base);
	drive.bipedRightLeg.render(base);

	GL11.glPopMatrix();
}
 

 

 

This produces:

I3e1Y3f.png

 

It looks fine it's just upside down and doesn't rotate with the player. Although the arms and legs move when walking.

I'm clearly doing something wrong or have missed out something.

 

Any help is appreciated, thanks.

I just want to know 1 thing because I have been dying on trying to get a model to render on the player.

 

1. How are you rendering your model

Link to comment
Share on other sites

2 hours ago, CyborgGamer21 said:

How are you rendering your model

He already showed you the code.

 

On 1/31/2016 at 11:09 PM, Wehavecookies56 said:

How can I align the model with the player?

1. Stop using GLXX. Use GlStateManager instead.

2. Get the player's horizontal rotation and apply the rotation to your model with GlStateManager#rotate. This shouldn't be that hard.

Some tips:

Spoiler

Modder Support:

Spoiler

1. Do not follow tutorials on YouTube, especially TechnoVision (previously called Loremaster) and HarryTalks, due to their promotion of bad practice and usage of outdated code.

2. Always post your code.

3. Never copy and paste code. You won't learn anything from doing that.

4. 

Quote

Programming via Eclipse's hotfixes will get you nowhere

5. Learn to use your IDE, especially the debugger.

6.

Quote

The "picture that's worth 1000 words" only works if there's an obvious problem or a freehand red circle around it.

Support & Bug Reports:

Spoiler

1. Read the EAQ before asking for help. Remember to provide the appropriate log(s).

2. Versions below 1.11 are no longer supported due to their age. Update to a modern version of Minecraft to receive support.

 

 

Link to comment
Share on other sites

Sorry we don't support 1.8.9 or any version under 1.10 on this forum anymore due to their age. We simply don't know how to help you anymore. You can go to the Minecraft Forum where I think that they still still support older versions, or update to a modern version of Minecraft (the latest version or the one before it) to receive support on this forum.

About Me

Spoiler

My Discord - Cadiboo#8887

My WebsiteCadiboo.github.io

My ModsCadiboo.github.io/projects

My TutorialsCadiboo.github.io/tutorials

Versions below 1.14.4 are no longer supported on this forum. Use the latest version to receive support.

When asking support remember to include all relevant log files (logs are found in .minecraft/logs/), code if applicable and screenshots if possible.

Only download mods from trusted sites like CurseForge (minecraft.curseforge.com). A list of bad sites can be found here, with more information available at stopmodreposts.org

Edit your own signature at www.minecraftforge.net/forum/settings/signature/ (Make sure to check its compatibility with the Dark Theme)

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • [15Aug2022 20:46:23.662] [Render thread/ERROR] [net.minecraft.client.Options/]: Failed to load options java.lang.NullPointerException: Cannot invoke "net.minecraft.client.KeyMapping.m_90865_()" because "keymapping" is null at net.minecraft.client.Options.processOptionsForge(Options.java:897) ~[client-1.19-20220607.102129-srg.jar%23381!/:?] at net.minecraft.client.Options.load(Options.java:973) ~[client-1.19-20220607.102129-srg.jar%23381!/:?] at net.minecraftforge.client.loading.ClientModLoader.lambda$finishModLoading$7(ClientModLoader.java:129) ~[forge-1.19-41.1.0-universal.jar%23386!/:?] This error looks very dubious. It basically says a mod has changed the Options.keyMappings and inserted a null value. If the mod used the correct way to do this, it would be impossible, there would be an error when it tries to do it. Unfortunately, the error does not say which mod causes the problem.
    • You should init the SimpleChannel instance at the end of the register method. No you need to cancel the Event and then send the Packet via the SimpleChannel to the client: // inside your LivingDeathEvent EventHandler event.setCanceled(true); if (event.getEntity() instance ServerPlayer player) { ModMessages.sendToPlayer(new TotemBellotoClientPacket(), player); } This code above is an example which is not tested.
    • The log you post does not contains any error which cause the game to crash. The file is called "debug (2).log" so it could be from a different (not the latest) run of Minecraft. If there is a file called debug.log please post it if there is no debug.log try to run the game again produced the error then. If there is still not debug.log please post launcher_log.txt as well.
    • Do you mean like the "World Type" button in the "Create New World Screen"? e.g. flat, large biomes, etc. It's not something I have looked at in recent versions. But you should look at WorldPreset which has a vanilla registry key in the Registry class you can use for DeferredRegister.   I believe you can also add them with using the datapack mechanism if you only want to resuse vanilla logic. The only thing I can find on the json format (beyond reading the codec) is this? https://misode.github.io/worldgen/world-preset/ 
    • Like this? SimpleMessage -> import net.minecraft.network.FriendlyByteBuf; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerPlayer; import net.minecraftforge.network.NetworkDirection; import net.minecraftforge.network.NetworkRegistry; import net.minecraftforge.network.PacketDistributor; import net.minecraftforge.network.simple.SimpleChannel; import java.util.function.BiConsumer; public class ModMessages { private static SimpleChannel INSTANCE; private static int packetId = 0; private static int id() { return packetId++; } public static void register() { SimpleChannel net = NetworkRegistry.ChannelBuilder .named(new ResourceLocation(Belloto.MOD_ID, "messages")) .networkProtocolVersion(() -> "1.0") .clientAcceptedVersions(s -> true) .serverAcceptedVersions(s -> true) .simpleChannel(); INSTANCE = net; net.messageBuilder(TotemBellotoPacket.class, id(), NetworkDirection.PLAY_TO_SERVER) .decoder(TotemBellotoPacket::new) .encoder(TotemBellotoPacket::toBytes) .consumer(TotemBellotoPacket::handle) .add(); net.messageBuilder(TotemBellotoClientPacket.class, id(), NetworkDirection.PLAY_TO_CLIENT) .decoder(TotemBellotoClientPacket::new) .encoder(TotemBellotoClientPacket::toBytes) .consumer(TotemBellotoClientPacket::handle) .add(); } public static <MSG> void sendToServer(MSG message) { INSTANCE.sendToServer(message); } public static <MSG> void sendToPlayer(MSG message, ServerPlayer player) { INSTANCE.send(PacketDistributor.PLAYER.with(() -> player), message); } } TotemClientPacket-> package com.naim.belloto.networking.packet; import com.naim.belloto.Init.ItemInit; import com.naim.belloto.networking.handler.ClientPacketHandlerClass; import net.minecraft.client.Minecraft; import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.fml.DistExecutor; import net.minecraftforge.network.NetworkEvent; import java.util.function.Supplier; import java.util.logging.Level; public class TotemBellotoClientPacket { public TotemBellotoClientPacket() { } public TotemBellotoClientPacket(FriendlyByteBuf buf) { } public void toBytes(FriendlyByteBuf buf) { } public boolean handle(Supplier<NetworkEvent.Context> ctx) { NetworkEvent.Context context = ctx.get(); context.enqueueWork(() -> { // Client DistExecutor.unsafeCallWhenOn(Dist.CLIENT,() -> () -> ClientPacketHandlerClass.handlePacket(ctx)); }); return true; } } And the handler like u say package com.naim.belloto.networking.handler; import com.naim.belloto.Init.ItemInit; import net.minecraft.client.Minecraft; import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraftforge.network.NetworkEvent; import java.util.function.Supplier; public class ClientPacketHandlerClass { public static boolean handlePacket(Supplier<NetworkEvent.Context> ctx) { Player player = Minecraft.getInstance().player; ClientLevel level = Minecraft.getInstance().level; Minecraft.getInstance().gameRenderer.displayItemActivation(new ItemStack(ItemInit.TOTEM_BELLOTO.get())); //level.playSound(null, player.getOnPos(), SoundEvents.TOTEM_USE, SoundSource.PLAYERS, 0.5F, level.random.nextFloat() *0.1F + 0.9F); return true; } } And u said to me i need to cancel LivingDeathEvent via my simpleChannel, but i need to put it in a packet? or what, im lerning about Networking im really confuse. can u give me an example or pseudocode pls 
  • Topics

×
×
  • Create New...

Important Information

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