Everything posted by FeedokTV
-
Capability synchronization
So, im trying to make updating system with id, first of all I wanted to see this id, but This is my handle code and error message @Override public void handle(UpdateCapPacket message, Supplier<NetworkEvent.Context> ctx) { if (ctx.get().getDirection().getReceptionSide() == LogicalSide.CLIENT) { ctx.get().enqueueWork(() -> { InfCust.LOGGER.error("[UPDATING CAP PACKET]"); InfCust.LOGGER.error(ctx.get().getSender().getId()); }); ctx.get().setPacketHandled(true); } } [23:12:09] [Render thread/FATAL] [minecraft/ThreadTaskExecutor]: Error executing task on Client java.lang.NullPointerException: null at net.minecraftforge.fml.LogicalSidedProvider.lambda$static$3(LogicalSidedProvider.java:33) ~[forge-1.16.5-36.2.29_mapped_official_1.16.5-recomp.jar:?] {re:classloading} at net.minecraftforge.fml.LogicalSidedProvider.get(LogicalSidedProvider.java:60) ~[forge-1.16.5-36.2.29_mapped_official_1.16.5-recomp.jar:?] {re:classloading} at net.minecraftforge.fml.network.PacketDistributor.getServer(PacketDistributor.java:264) ~[forge-1.16.5-36.2.29_mapped_official_1.16.5-recomp.jar:?] {re:classloading} at net.minecraftforge.fml.network.PacketDistributor.lambda$playerListAll$3(PacketDistributor.java:224) ~[forge-1.16.5-36.2.29_mapped_official_1.16.5-recomp.jar:?] {re:classloading} at net.minecraftforge.fml.network.PacketDistributor$PacketTarget.send(PacketDistributor.java:179) ~[forge-1.16.5-36.2.29_mapped_official_1.16.5-recomp.jar:?] {re:classloading} at net.minecraftforge.fml.network.simple.SimpleChannel.send(SimpleChannel.java:124) ~[forge-1.16.5-36.2.29_mapped_official_1.16.5-recomp.jar:?] {re:classloading} at com.feedoktv.infcust.common.core.networking.PacketDispatcher.sendToAll(PacketDispatcher.java:66) ~[main/:?] {re:classloading} at com.feedoktv.infcust.client.handlers.EventHandlerClient.OpenCustMenu(EventHandlerClient.java:82) ~[main/:?] {re:classloading} at com.feedoktv.infcust.common.core.networking.packets.OpenMainMenuPacket.lambda$handle$0(OpenMainMenuPacket.java:26) ~[main/:?] {re:classloading} at net.minecraftforge.fml.network.NetworkEvent$Context.enqueueWork(NetworkEvent.java:215) ~[forge-1.16.5-36.2.29_mapped_official_1.16.5-recomp.jar:?] {re:classloading} at com.feedoktv.infcust.common.core.networking.packets.OpenMainMenuPacket.handle(OpenMainMenuPacket.java:23) ~[main/:?] {re:classloading} at com.feedoktv.infcust.common.core.networking.packets.OpenMainMenuPacket.handle(OpenMainMenuPacket.java:10) ~[main/:?] {re:classloading} at net.minecraftforge.fml.network.simple.IndexedMessageCodec.lambda$tryDecode$3(IndexedMessageCodec.java:128) ~[forge-1.16.5-36.2.29_mapped_official_1.16.5-recomp.jar:?] {re:classloading} at java.util.Optional.ifPresent(Optional.java:159) ~[?:1.8.0_311] {} at net.minecraftforge.fml.network.simple.IndexedMessageCodec.tryDecode(IndexedMessageCodec.java:128) ~[forge-1.16.5-36.2.29_mapped_official_1.16.5-recomp.jar:?] {re:classloading} at net.minecraftforge.fml.network.simple.IndexedMessageCodec.consume(IndexedMessageCodec.java:162) ~[forge-1.16.5-36.2.29_mapped_official_1.16.5-recomp.jar:?] {re:classloading} at net.minecraftforge.fml.network.simple.SimpleChannel.networkEventListener(SimpleChannel.java:80) ~[forge-1.16.5-36.2.29_mapped_official_1.16.5-recomp.jar:?] {re:classloading} at net.minecraftforge.eventbus.EventBus.doCastFilter(EventBus.java:247) ~[eventbus-4.0.0.jar:?] {} at net.minecraftforge.eventbus.EventBus.lambda$addListener$11(EventBus.java:239) ~[eventbus-4.0.0.jar:?] {} at net.minecraftforge.eventbus.EventBus.post(EventBus.java:302) ~[eventbus-4.0.0.jar:?] {} at net.minecraftforge.eventbus.EventBus.post(EventBus.java:283) ~[eventbus-4.0.0.jar:?] {} at net.minecraftforge.fml.network.NetworkInstance.dispatch(NetworkInstance.java:86) ~[forge-1.16.5-36.2.29_mapped_official_1.16.5-recomp.jar:?] {re:classloading} at net.minecraftforge.fml.network.NetworkHooks.lambda$onCustomPayload$1(NetworkHooks.java:91) ~[forge-1.16.5-36.2.29_mapped_official_1.16.5-recomp.jar:?] {re:classloading} at java.util.Optional.map(Optional.java:215) ~[?:1.8.0_311] {} at net.minecraftforge.fml.network.NetworkHooks.onCustomPayload(NetworkHooks.java:91) ~[forge-1.16.5-36.2.29_mapped_official_1.16.5-recomp.jar:?] {re:classloading} at net.minecraft.client.network.play.ClientPlayNetHandler.handleCustomPayload(ClientPlayNetHandler.java:1904) ~[forge-1.16.5-36.2.29_mapped_official_1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.network.play.server.SCustomPayloadPlayPacket.handle(SCustomPayloadPlayPacket.java:59) ~[forge-1.16.5-36.2.29_mapped_official_1.16.5-recomp.jar:?] {re:classloading} at net.minecraft.network.play.server.SCustomPayloadPlayPacket.handle(SCustomPayloadPlayPacket.java:11) ~[forge-1.16.5-36.2.29_mapped_official_1.16.5-recomp.jar:?] {re:classloading} at net.minecraft.network.PacketThreadUtil.lambda$ensureRunningOnSameThread$0(PacketThreadUtil.java:19) ~[forge-1.16.5-36.2.29_mapped_official_1.16.5-recomp.jar:?] {re:classloading} at net.minecraft.util.concurrent.ThreadTaskExecutor.doRunTask(ThreadTaskExecutor.java:136) ~[forge-1.16.5-36.2.29_mapped_official_1.16.5-recomp.jar:?] {re:classloading,pl:accesstransformer:B} at net.minecraft.util.concurrent.RecursiveEventLoop.doRunTask(RecursiveEventLoop.java:22) ~[forge-1.16.5-36.2.29_mapped_official_1.16.5-recomp.jar:?] {re:classloading} at net.minecraft.util.concurrent.ThreadTaskExecutor.pollTask(ThreadTaskExecutor.java:109) ~[forge-1.16.5-36.2.29_mapped_official_1.16.5-recomp.jar:?] {re:classloading,pl:accesstransformer:B} at net.minecraft.util.concurrent.ThreadTaskExecutor.runAllTasks(ThreadTaskExecutor.java:97) ~[forge-1.16.5-36.2.29_mapped_official_1.16.5-recomp.jar:?] {re:classloading,pl:accesstransformer:B} at net.minecraft.client.Minecraft.runTick(Minecraft.java:948) ~[forge-1.16.5-36.2.29_mapped_official_1.16.5-recomp.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A} at net.minecraft.client.Minecraft.run(Minecraft.java:607) ~[forge-1.16.5-36.2.29_mapped_official_1.16.5-recomp.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A} at net.minecraft.client.main.Main.main(Main.java:184) ~[forge-1.16.5-36.2.29_mapped_official_1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A} at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_311] {} at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_311] {} at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_311] {} at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_311] {} at net.minecraftforge.userdev.FMLUserdevClientLaunchProvider.lambda$launchService$0(FMLUserdevClientLaunchProvider.java:52) ~[forge-1.16.5-36.2.29_mapped_official_1.16.5-recomp.jar:?] {} at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:37) [modlauncher-8.1.3.jar:?] {} at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:54) [modlauncher-8.1.3.jar:?] {} at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:72) [modlauncher-8.1.3.jar:?] {} at cpw.mods.modlauncher.Launcher.run(Launcher.java:82) [modlauncher-8.1.3.jar:?] {} at cpw.mods.modlauncher.Launcher.main(Launcher.java:66) [modlauncher-8.1.3.jar:?] {} at net.minecraftforge.userdev.LaunchTesting.main(LaunchTesting.java:108) [forge-1.16.5-36.2.29_mapped_official_1.16.5-recomp.jar:?] {}
-
Capability synchronization
Huh, why does ctx.get().getSender().getId() returns null, If I send my packet to all
-
Capability synchronization
Huh, understand. I think I can get by ctx.get().getSender().getId(); But, how correctly I have to work with this id? If it's not difficult for you, could you show or tell how exactly I should contact the player by his id in my packet?
-
Capability synchronization
CapabilityUtil public void updateCapabilityHatId(int id) { ClientPlayerEntity player = Minecraft.getInstance().player; player.getCapability(HatCapability.PLAYER_HAT_ID).ifPresent((Data) -> Data.setValue(id)); } public int getCapabilityHatId() { ClientPlayerEntity player = Minecraft.getInstance().player; if (player != null) { int id = player.getCapability(HatCapability.PLAYER_HAT_ID) .map(capa -> capa.getValue()) .orElse(0); return id; } else return -1; } Something like a helper to me. So how can I make this packet correctly. Sorry for the question, I'm just starting to understand this whole topic and don't understand how exactly to make this packet
-
Capability synchronization
Sup! I'm so sorry for asking questuions so often. Now Im stydying how to work with capabilities and netwrok. I have a cap which contains some int id. It changes in custom menu. I want to synchronize it with other players, but so far it hasn't worked. Could someone who knows me give me an idea or tell me how to implement it. public class UpdateCapPacket extends AbstractMessage<UpdateCapPacket> { private int hatId; public UpdateCapPacket() { } public UpdateCapPacket(int id) { this.hatId = id; } @Override public void encode(UpdateCapPacket message, PacketBuffer buffer) { buffer.writeInt(message.hatId); } @Override public UpdateCapPacket decode(PacketBuffer buffer) { int id = buffer.readInt(); return new UpdateCapPacket(hatId); } @Override public void handle(UpdateCapPacket message, Supplier<NetworkEvent.Context> ctx) { if (ctx.get().getDirection().getReceptionSide() == LogicalSide.CLIENT) ctx.get().enqueueWork(() -> { InfCust.LOGGER.error("[UPDATING CAP PACKET]"); final Optional<World> optionalWorld = LogicalSidedProvider.CLIENTWORLD.get(ctx.get().getDirection().getReceptionSide()); final LivingEntity livingEntity = ctx.get().getSender(); if (livingEntity != null) { // Living entity is always null, whats wrong InfCust.LOGGER.error("[CHANGING CAP]"); optionalWorld.ifPresent(world -> InfCust.capabilityUtil.updateCapabilityHatId(message.hatId)); } InfCust.LOGGER.error(InfCust.capabilityUtil.getCapabilityHatId()); }); ctx.get().setPacketHandled(true); } } public void OpenCustMenu() { // For example Minecraft.getInstance().setScreen(new CustomizationScreen()); PacketDispatcher.sendToAll(new UpdateCapPacket(-1)); }
-
RenderLayer + Capability
Thanks, Luis! Im already unerstand this, but I just don't know how to tell my renderer that for individual players it is necessary to set the model of the corresponding capability. But diesieben07 says that renderer is one global for all
-
RenderLayer + Capability
Well, huh But, dont you know how to make what I want? Maybe any idea...
-
RenderLayer + Capability
Hello I have a mod which wearing some model to player. I have capability and renderer for it, but idk how to connect it to each other. Each player must have his own model (which he chooses in the GUI, but it doesn't matter). I have created with the id of the model that will be rendered on the player, however I don't quite understand how to set up the RenderLayer for each player individually Renderer public void render(MatrixStack mstack, IRenderTypeBuffer p_225628_2_, int p_225628_3_, T p_225628_4_, float p_225628_5_, float p_225628_6_, float p_225628_7_, float p_225628_8_, float p_225628_9_, float p_225628_10_) { int itemId = InfCust.capabilityUtil.getCapabilityHatId(); CustItem item = null; if (itemId != -1) { item = InfCust.itemsHandler.getItemByIndex(itemId); } ItemStack itemstack = p_225628_4_.getItemBySlot(EquipmentSlotType.HEAD); float f = MathHelper.lerp(p_225628_7_, p_225628_4_.yRotO, p_225628_4_.yRot) - MathHelper.lerp(p_225628_7_, p_225628_4_.yBodyRotO, p_225628_4_.yBodyRot); float f1 = MathHelper.lerp(p_225628_7_, p_225628_4_.xRotO, p_225628_4_.xRot); mstack.pushPose(); mstack.mulPose(Vector3f.YP.rotationDegrees(f)); mstack.mulPose(Vector3f.XP.rotationDegrees(f1)); mstack.translate(0.0D, 0.5D, 0.0D); mstack.scale(1F, 1F, 1F); if(item != null) { IVertexBuilder ivertexbuilder = ItemRenderer.getArmorFoilBuffer(p_225628_2_, RenderType.armorCutoutNoCull(item.getModelTexture()), false, itemstack.hasFoil()); item.getModel().renderToBuffer(mstack, ivertexbuilder, p_225628_3_, OverlayTexture.NO_OVERLAY, 1.0F, 1.0F, 1.0F, 1.0F); } mstack.mulPose(Vector3f.XP.rotationDegrees(-f1)); mstack.mulPose(Vector3f.YP.rotationDegrees(-f)); mstack.popPose(); } Capability util (handling to capability faster) public void updateCapabilityHatId(int id) { ClientPlayerEntity player = Minecraft.getInstance().player; player.getCapability(HatCapability.PLAYER_HAT_ID).ifPresent((Data) -> Data.setValue(id)); } public int getCapabilityHatId() { ClientPlayerEntity player = Minecraft.getInstance().player; int id = player.getCapability(HatCapability.PLAYER_HAT_ID) .map(capa -> capa.getValue()) .orElse(0); return id; } Sorry for shit code I know that I have to use packet system, but Im actually dont know what my renderer have to do
-
Custom layer render for each player
Well I figured out the capability and now I have a cap that stores the id of some model that will be rendered. Have I edit the render method correctly now? int itemId = InfCust.capabilityUtil.getCapabilityHatId(); CustItem item = InfCust.itemsHandler.getItemByIndex(itemId); ItemStack itemstack = p_225628_4_.getItemBySlot(EquipmentSlotType.HEAD); float f = MathHelper.lerp(p_225628_7_, p_225628_4_.yRotO, p_225628_4_.yRot) - MathHelper.lerp(p_225628_7_, p_225628_4_.yBodyRotO, p_225628_4_.yBodyRot); float f1 = MathHelper.lerp(p_225628_7_, p_225628_4_.xRotO, p_225628_4_.xRot); mstack.pushPose(); mstack.mulPose(Vector3f.YP.rotationDegrees(f)); mstack.mulPose(Vector3f.XP.rotationDegrees(f1)); mstack.translate(0.0D, 0.5D, 0.0D); mstack.scale(1F, 1F, 1F); //this.getParentModel().copyPropertiesTo(this.elytraModel); //this.elytraModel.setupAnim(p_225628_4_, p_225628_5_, p_225628_6_, p_225628_8_, p_225628_9_, p_225628_10_); if(item != null) { IVertexBuilder ivertexbuilder = ItemRenderer.getArmorFoilBuffer(p_225628_2_, RenderType.armorCutoutNoCull(item.getModelTexture()), false, itemstack.hasFoil()); item.getModel().renderToBuffer(mstack, ivertexbuilder, p_225628_3_, OverlayTexture.NO_OVERLAY, 1.0F, 1.0F, 1.0F, 1.0F); //hh.renderToBuffer(mstack, ivertexbuilder, p_225628_3_, OverlayTexture.NO_OVERLAY, 1.0F, 1.0F, 1.0F, 1.0F); } mstack.mulPose(Vector3f.XP.rotationDegrees(-f1)); mstack.mulPose(Vector3f.YP.rotationDegrees(-f)); mstack.popPose(); getCapabilityHatId method public int getCapabilityHatId() { int id = Minecraft.getInstance().player.getCapability(HatCapability.PLAYER_HAT_ID) .map(capa -> capa.getValue()) .orElse(0); return id; }
-
Custom layer render for each player
Oh, I never heard about that. Thanks!
-
Custom layer render for each player
So there is my render layer @Override public void render(MatrixStack mstack, IRenderTypeBuffer p_225628_2_, int p_225628_3_, T p_225628_4_, float p_225628_5_, float p_225628_6_, float p_225628_7_, float p_225628_8_, float p_225628_9_, float p_225628_10_) { CustItem item = InfCust.itemsHandler.getCurrentItem(); ItemStack itemstack = p_225628_4_.getItemBySlot(EquipmentSlotType.HEAD); float f = MathHelper.lerp(p_225628_7_, p_225628_4_.yRotO, p_225628_4_.yRot) - MathHelper.lerp(p_225628_7_, p_225628_4_.yBodyRotO, p_225628_4_.yBodyRot); float f1 = MathHelper.lerp(p_225628_7_, p_225628_4_.xRotO, p_225628_4_.xRot); mstack.pushPose(); mstack.mulPose(Vector3f.YP.rotationDegrees(f)); mstack.mulPose(Vector3f.XP.rotationDegrees(f1)); mstack.translate(0.0D, 0.5D, 0.0D); mstack.scale(1F, 1F, 1F); if(item != null) { IVertexBuilder ivertexbuilder = ItemRenderer.getArmorFoilBuffer(p_225628_2_, RenderType.armorCutoutNoCull(item.getModelTexture()), false, itemstack.hasFoil()); item.getModel().renderToBuffer(mstack, ivertexbuilder, p_225628_3_, OverlayTexture.NO_OVERLAY, 1.0F, 1.0F, 1.0F, 1.0F); } mstack.mulPose(Vector3f.XP.rotationDegrees(-f1)); mstack.mulPose(Vector3f.YP.rotationDegrees(-f)); mstack.popPose(); } And GUI Item and CustItem its class which have information about my model (need for gui and etc). It has model, texture path and something like this. Every frame Im updating current model which will render on my player. If I want to change it I have to use gui and special button in it, which updating model that requested getCurrrentItem() method
-
Custom layer render for each player
Im so sorry for that stupid question, Im new in forge modding, thank you for your understanding and restraint
-
Custom layer render for each player
Greetings! I have my custom layer render class which changes something with player by using gui. However, if you use it on the server, then if one player changes what they have, then everyone will have it, although in theory everything should be individual for each. In addition, it only manifests itself in the person who has changed. I believe that it is necessary here with packets, but something is not clear what is sent to the server for me
-
Set custom render for minecraft item
Thanks for information!
-
Set custom render for minecraft item
I mean, I can change it in a game process. I want original diamond sword, woops and change it. Want for example "Flaming" skin with some effects, and change it. If it's not difficult, could you tell me in which direction to look and search for information. What part of the forge is this?
-
Set custom render for minecraft item
Yes, ofcourse! I want to make skinchanging-like system. I have my gui, where I will change skin(i.e. texture) or model for chosen item. It will change after button click in gui. I heard about ISTER, maybe this thing will help me?
-
Set custom render for minecraft item
Hello, I want to change render for minecraft item (for example sword or armor) after pressing some button in menu. How I can realize this changing?
-
Render AgeableModel
Hello guys! I have AgeableModel, which I render on a player, how I can render it in Gui for example? (Im actually dont know where I should take args for renderToBuffer)
-
Broken vector in BufferBuilder
Hello! I want to make gui with bufferbuilder, but in render process there is a one extra edge in it. Maybe anybody knows where problem is? RenderSystem.disableDepthTest(); RenderSystem.depthMask(false); RenderSystem.enableBlend(); RenderSystem.defaultBlendFunc(); RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F); RenderSystem.disableAlphaTest(); minecraft.getTextureManager().bind(GUIres); Tessellator tessellator = Tessellator.getInstance(); BufferBuilder bufferbuilder = tessellator.getBuilder(); bufferbuilder.begin(7, DefaultVertexFormats.POSITION_TEX); bufferbuilder.vertex(leftPos, (double)leftPos+imageHeight, 0.0D).uv(0.0F, 1.0F).endVertex(); bufferbuilder.vertex(leftPos+imageWidth, topPos+imageHeight, 0.0D).uv(1.0F, 1.0F).endVertex(); bufferbuilder.vertex((double)leftPos+imageWidth, topPos, 0.0D).uv(1.0F, 0.0F).endVertex(); bufferbuilder.vertex(leftPos, topPos, 0.0D).uv(0.0F, 0.0F).endVertex(); tessellator.end(); RenderSystem.depthMask(true); RenderSystem.enableDepthTest(); RenderSystem.enableAlphaTest(); RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F); RenderSystem.disableDepthTest(); RenderSystem.depthMask(false); RenderSystem.enableBlend(); RenderSystem.defaultBlendFunc(); RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F); RenderSystem.disableAlphaTest(); minecraft.getTextureManager().bind(GUIres); Tessellator tessellator = Tessellator.getInstance(); BufferBuilder bufferbuilder = tessellator.getBuilder(); bufferbuilder.begin(7, DefaultVertexFormats.POSITION_TEX); bufferbuilder.vertex(leftPos, (double)leftPos+imageHeight, 0.0D).uv(0.0F, 1.0F).endVertex(); bufferbuilder.vertex(leftPos+imageWidth, topPos+imageHeight, 0.0D).uv(1.0F, 1.0F).endVertex(); bufferbuilder.vertex((double)leftPos+imageWidth, topPos, 0.0D).uv(1.0F, 0.0F).endVertex(); bufferbuilder.vertex(leftPos, topPos, 0.0D).uv(0.0F, 0.0F).endVertex(); tessellator.end(); RenderSystem.depthMask(true); RenderSystem.enableDepthTest(); RenderSystem.enableAlphaTest(); RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F);
-
Draw something with Tesollator [1.16.5]
Hello! I'd like to make a gui with resolution more than 256x256, after reading some topics before I understand that it could be possible with Tessolator and BufferReader. Can please somebody send and example of code for it?
-
Create and open GUI with key event[1.16.5]
Hello everyone! I know this topic is pretty hackneyed, but I'm having trouble building a GUI on the version above. I would like to create a GUI that opens when you click on the M button (for example). After looking at the minecraft code, I realized that most likely I need the Screen class. However, I still do not understand how I can realize this class, set the texture on the gui and bind the button
-
Creating model with code [1.16.5]
Yeah, I accidentally created a topic with the text of the draft. The draft was intended for my previous question. Fixed the main part
-
Creating model with code [1.16.5]
Hi! Please can anybody help me with creating models with code? I mean with ModelRenderer class. I was looking sources and tried to understand, but its worthless because of input parameters name like p_228300_1_ p_228304_2_ and etc. I'm really dont understand constructor of ModelRenderer class and addBox function
-
[1.16.5] Need a help with a creating a new render layer
That works! Thank you so much!
-
[1.16.5] Need a help with a creating a new render layer
I have tried this before but will try now (yes I tried to use elytra model) @Override public void render(MatrixStack mstack, IRenderTypeBuffer p_225628_2_, int p_225628_3_, T p_225628_4_, float p_225628_5_, float p_225628_6_, float p_225628_7_, float p_225628_8_, float p_225628_9_, float p_225628_10_) { InfCust.LOGGER.error("[INFCUST] ITEMSLAYER RENDER"); ItemStack itemstack = p_225628_4_.getItemBySlot(EquipmentSlotType.HEAD); mstack.pushPose(); mstack.translate(0.0D, 0.0D, 0.125D); this.getParentModel().copyPropertiesTo(this.elytraModel); this.elytraModel.setupAnim(p_225628_4_, p_225628_5_, p_225628_6_, p_225628_8_, p_225628_9_, p_225628_10_); IVertexBuilder ivertexbuilder = ItemRenderer.getArmorFoilBuffer(p_225628_2_, RenderType.armorCutoutNoCull(WINGS_LOCATION), false, itemstack.hasFoil()); this.elytraModel.renderToBuffer(mstack, ivertexbuilder, p_225628_3_, OverlayTexture.NO_OVERLAY, 1.0F, 1.0F, 1.0F, 1.0F); mstack.popPose(); }
IPS spam blocked by CleanTalk.