Follow along with the video below to see how to install our site as a web app on your home screen.
Примечание: This feature may not be available in some browsers.
timaxa007 написал(а):Попробуй использовать эвент для рендера RenderPlayerEvent и добавь модель рюкзака на спину игрока.
timaxa007 написал(а):У меня его нет. А когда я его сделаю не знаю.
@ForgeSubscribe
public void renderItem(RenderPlayerEvent.Specials.Pre event) {
EntityPlayer player = event.entityPlayer;
if (player != null) {
boolean flag = false;
for (ItemStack is : player.inventory.mainInventory) {
if (is != null) {
if (is.getItem() == Items.backpack) flag = true;
}
}
if (flag) {
double p_x = player.lastTickPosX + (player.posX - player.lastTickPosX);
double p_y = player.lastTickPosY + (player.posY - player.lastTickPosY);
double p_z = player.lastTickPosZ + (player.posZ - player.lastTickPosZ);
double dx = player.posX - p_x;
double dy = player.posY - p_y;
double dz = player.posZ - p_z;
GL11.glPushMatrix();
GL11.glTranslated(dx, dy, dz);
{
GL11.glPushMatrix();
GL11.glEnable(3042);
GL11.glBlendFunc(770, 771);
GL11.glTranslatef(-0.0F, 0.7F, 0.2F);
GL11.glRotatef(90.0F, 0.0F, 0.0F, 1.0F);
GL11.glRotatef(90.0F, 0.0F, 1.0F, 0.0F);
GL11.glRotatef(-90.0F, 1.0F, 0.0F, 0.0F);
GL11.glScaled(1.53D, 1.53D, 1.53D);
Minecraft.getMinecraft().renderEngine.bindTexture(texBackpack);
if(Minecraft.getMinecraft().thePlayer.isSneaking() == true){
GL11.glTranslatef(-0.3F, 0.2F, 0.0F);
GL11.glRotatef(-45.0F, 0.0F, 0.0F, 1.0F);
GL11.glRotatef(0.0F, 0.0F, 1.0F, 0.0F);
GL11.glRotatef(0F, 1.0F, 0.0F, 0.0F);
}
modelBackpack.renderAll();
GL11.glDisable(3042);
GL11.glPopMatrix();
}
GL11.glPopMatrix();
}
}
}
Develance написал(а):Не то что нужно, но чтобы решить проблему тебе этого хватит.
Код:@ForgeSubscribe public void renderItem(RenderPlayerEvent.Specials.Pre event) { EntityPlayer player = event.entityPlayer; if (player != null) { boolean flag = false; for (ItemStack is : player.inventory.mainInventory) { if (is != null) { if (is.getItem() == Items.backpack) flag = true; } } if (flag) { double p_x = player.lastTickPosX + (player.posX - player.lastTickPosX); double p_y = player.lastTickPosY + (player.posY - player.lastTickPosY); double p_z = player.lastTickPosZ + (player.posZ - player.lastTickPosZ); double dx = player.posX - p_x; double dy = player.posY - p_y; double dz = player.posZ - p_z; GL11.glPushMatrix(); GL11.glTranslated(dx, dy, dz); { GL11.glPushMatrix(); GL11.glEnable(3042); GL11.glBlendFunc(770, 771); GL11.glTranslatef(-0.0F, 0.7F, 0.2F); GL11.glRotatef(90.0F, 0.0F, 0.0F, 1.0F); GL11.glRotatef(90.0F, 0.0F, 1.0F, 0.0F); GL11.glRotatef(-90.0F, 1.0F, 0.0F, 0.0F); GL11.glScaled(1.53D, 1.53D, 1.53D); Minecraft.getMinecraft().renderEngine.bindTexture(texBackpack); if(Minecraft.getMinecraft().thePlayer.isSneaking() == true){ GL11.glTranslatef(-0.3F, 0.2F, 0.0F); GL11.glRotatef(-45.0F, 0.0F, 0.0F, 1.0F); GL11.glRotatef(0.0F, 0.0F, 1.0F, 0.0F); GL11.glRotatef(0F, 1.0F, 0.0F, 0.0F); } modelBackpack.renderAll(); GL11.glDisable(3042); GL11.glPopMatrix(); } GL11.glPopMatrix(); } } }
timaxa007 написал(а):В отдельный класс и зарегистрировать этот эвент. А так-же сменить аннотацию с @ForgeSubscribe на @SubscribeEvent.
MinecraftForge.EVENT_BUS.register(new YourClassEvent());
MinecraftForge.EVENT_BUS.register(new EventsForgeClient());
public class EventsForgeClient {
Minecraft mc = Minecraft.getMinecraft();
private static final ResourceLocation texture = new ResourceLocation(SMTCommon.MODID, "model/armor/armor_plane.png");
public static final IModelCustom model = AdvancedModelLoader.loadModel(new ResourceLocation(SMTCommon.MODID, "model/armor/armor_plane.obj"));
@SubscribeEvent
public void renderItem(RenderPlayerEvent.Specials.Pre event) {
EntityPlayer player = event.entityPlayer;
double p_x = player.lastTickPosX + (player.posX - player.lastTickPosX);
double p_y = player.lastTickPosY + (player.posY - player.lastTickPosY);
double p_z = player.lastTickPosZ + (player.posZ - player.lastTickPosZ);
double dx = player.posX - p_x;
double dy = player.posY - p_y;
double dz = player.posZ - p_z;
GL11.glPushMatrix();
GL11.glTranslated(dx, dy, dz);
GL11.glRotatef(180F, 1F, 0F, 0F);
GL11.glTranslatef(
event.renderer.modelBipedMain.bipedBody.rotationPointX * event.partialRenderTick,
event.renderer.modelBipedMain.bipedBody.rotationPointY * event.partialRenderTick,
event.renderer.modelBipedMain.bipedBody.rotationPointZ * event.partialRenderTick);
GL11.glRotatef(event.renderer.modelBipedMain.bipedBody.rotateAngleZ * (180F / (float)Math.PI), 0F, 0F, 1F);
GL11.glRotatef(event.renderer.modelBipedMain.bipedBody.rotateAngleY * (180F / (float)Math.PI), 0F, 1F, 0F);
GL11.glRotatef(event.renderer.modelBipedMain.bipedBody.rotateAngleX * (180F / (float)Math.PI), 1F, 0F, 0F);
GL11.glTranslatef(0F, -1.5F, 0F);
mc.renderEngine.bindTexture(texture);
model.renderAll();
GL11.glPopMatrix();
}
}
Т.е модель в obj можно? Можешь любую для теста кинуть?timaxa007 написал(а):Модель есть, но не рюкзака и у меня эта модель в *.obj формате.
Код:MinecraftForge.EVENT_BUS.register(new YourClassEvent());Код:MinecraftForge.EVENT_BUS.register(new EventsForgeClient());Код:public class EventsForgeClient { Minecraft mc = Minecraft.getMinecraft(); private static final ResourceLocation texture = new ResourceLocation(SMTCommon.MODID, "model/armor/armor_plane.png"); public static final IModelCustom model = AdvancedModelLoader.loadModel(new ResourceLocation(SMTCommon.MODID, "model/armor/armor_plane.obj")); @SubscribeEvent public void renderItem(RenderPlayerEvent.Specials.Pre event) { EntityPlayer player = event.entityPlayer; double p_x = player.lastTickPosX + (player.posX - player.lastTickPosX); double p_y = player.lastTickPosY + (player.posY - player.lastTickPosY); double p_z = player.lastTickPosZ + (player.posZ - player.lastTickPosZ); double dx = player.posX - p_x; double dy = player.posY - p_y; double dz = player.posZ - p_z; GL11.glPushMatrix(); GL11.glTranslated(dx, dy, dz); GL11.glTranslatef(0F, 0.125F, 0F); GL11.glRotatef(180F, 1F, 0F, 0F); GL11.glTranslatef( event.renderer.modelBipedMain.bipedBody.rotationPointX * event.partialRenderTick, event.renderer.modelBipedMain.bipedBody.rotationPointY * event.partialRenderTick, event.renderer.modelBipedMain.bipedBody.rotationPointZ * event.partialRenderTick); GL11.glRotatef(event.renderer.modelBipedMain.bipedBody.rotateAngleZ * (180F / (float)Math.PI), 0F, 0F, 1F); GL11.glRotatef(event.renderer.modelBipedMain.bipedBody.rotateAngleY * (180F / (float)Math.PI), 0F, 1F, 0F); GL11.glRotatef(event.renderer.modelBipedMain.bipedBody.rotateAngleX * (180F / (float)Math.PI), 1F, 0F, 0F); GL11.glTranslatef(0F, -1.375F, 0F); mc.renderEngine.bindTexture(texture); model.renderAll(); GL11.glPopMatrix(); } }
timaxa007 написал(а):А почему нельзя? Не вижу серьёзной преграды для этого. https://yadi.sk/d/dkNkgfjsy7qRZ
timaxa007 написал(а):Так укажи правильный путь.