Прикрпленая модель к игрокам (рюкзак)

Версия Minecraft
1.7.10
98
1
Хочу сделать, что бы при входе на сервер у всех игроков была прикреплена модель рюкзака к спине (делаю dayz). Эту модель нельзя было снять, и другие игроки ее тоже видят. Если вам не тяжело, можете кинуть готовый код?
 
Если я не ошибаюсь попробуй отредактировать модель стива если у тебя будут одинаковые скины, а там я не знаю.
 
Не то что нужно, но чтобы решить проблему тебе этого хватит.
Код:
@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();
 }
 }
 }

Куда это вставлять?
 
Модель есть, но не рюкзака и у меня эта модель в *.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.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();
	}

}
 
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();
 }

}
Т.е модель в obj можно? Можешь любую для теста кинуть?
 
Назад
Сверху