- 279
- 0
Sup, дорогуши.
Предисловие:
1. Вам необходимо уметь создавать главный класс мода.
2. Вам необходимо уметь регистрировать прокси.
3. Вам необходимо уметь делать предметы брони.
4. Вам необходимо уметь создавать ПРАВИЛЬНУЮ модель брони в Techne. Об этом напишу в следующем туториале.
Всем привет. Наверняка кого-то да пекло, как сделать эту самую злополучную броню, без багов, вылетов и прочих нелепостей. Сегодня я вам это и расскажу, итак, приступим.
Основа.
Вам необходимо иметь скачанный API RenderPlayerAPI, он нужен для того, что бы делать броню совместимую с SmartMoving. Я лично делал вместе с ним, сразу.
Далее нам нужен какой нибудь простейший предмет брони, допустим у меня это будет нагрудник.
Теперь в классе ClientProxy мы пишем следующее:
Затем, создаем наш тот самый RenderPlayerMOD
Далее нам надо сделать саму модель.
Вот собственно вроде и все.
Анти, перенеси тему в туториалы, если сочтешь нужным. Надеюсь кому-то да пригодится.
Картинка готового варианта - тык.
Предисловие:
1. Вам необходимо уметь создавать главный класс мода.
2. Вам необходимо уметь регистрировать прокси.
3. Вам необходимо уметь делать предметы брони.
4. Вам необходимо уметь создавать ПРАВИЛЬНУЮ модель брони в Techne. Об этом напишу в следующем туториале.
Всем привет. Наверняка кого-то да пекло, как сделать эту самую злополучную броню, без багов, вылетов и прочих нелепостей. Сегодня я вам это и расскажу, итак, приступим.
Основа.
Вам необходимо иметь скачанный API RenderPlayerAPI, он нужен для того, что бы делать броню совместимую с SmartMoving. Я лично делал вместе с ним, сразу.
Далее нам нужен какой нибудь простейший предмет брони, допустим у меня это будет нагрудник.
Теперь в классе ClientProxy мы пишем следующее:
Код:
package somePackage
...
import api.player.render.RenderPlayerAPI;
...
public class ClientProxy extends CommonProxy {
public static Renders renders = new Renders();
private ModelBackPack backpack = new ModelBackPack();
public void renderSetup()
{
RenderPlayerAPI.register("BackpackMod", RenderPlayerMOD.class);
}
...
//дальше какой нибудь ваш код.
}
Код:
import api.player.render.RenderPlayerAPI;
...
public class RenderPlayerMOD extends RenderPlayerBase {
private Minecraft mc = Minecraft.getMinecraft();
private static final ResourceLocation backpack_texture = new ResourceLocation("backpackmod:textures/models/bp_texture.png");
private ModelBackPack backpack = new ModelBackPack();
public RenderPlayerMOD(RenderPlayerAPI renderPlayerAPI) {
super(renderPlayerAPI);
}
public void renderSpecials(AbstractClientPlayer par1AbstractClientPlayer, float par2) {
super.renderSpecials(par1AbstractClientPlayer, par2);
if(par1AbstractClientPlayer.getCurrentArmor(2) != null) {
if(par1AbstractClientPlayer.getCurrentArmor(2).itemID == Backpackmod.bp.itemID) {
this.mc.getTextureManager().bindTexture(bp_texture);
super.renderPlayer.getModelBipedMainField().bipedBody.postRender(0.0625F);
this.backpack.render(0.0625F);
}
}
Код:
package backpackmod.client.models;
import cpw.mods.fml.client.FMLClientHandler;
import net.minecraft.client.model.ModelBiped;
import net.minecraft.client.model.ModelRenderer;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.util.ResourceLocation;
import org.lwjgl.opengl.GL11;
public class ModelBackpack extends ModelBiped {
ModelRenderer Shape1;
ModelRenderer Shape2;
ModelRenderer Shape4;
ModelRenderer Shape41;
ModelRenderer Shape5;
ModelRenderer Shape6;
ModelRenderer Shape7;
ResourceLocation backpack_texture = new ResourceLocation("backpackmod:textures/models/bp_texture.png");
public ModelBackpack() {
super.textureWidth = 128;
super.textureHeight = 64;
this.Shape1 = new ModelRenderer(this, 34, 0);
this.Shape1.addBox(0.0F, 0.0F, 0.0F, 8, 12, 4);
this.Shape1.setRotationPoint(-4.0F, 0.0F, 2.0F);
this.Shape1.setTextureSize(128, 64);
this.Shape1.mirror = true;
this.setRotation(this.Shape1, 0.0F, 0.0F, 0.0F);
this.Shape2 = new ModelRenderer(this, 59, 0);
this.Shape2.addBox(0.0F, 0.0F, 0.0F, 6, 2, 3);
this.Shape2.setRotationPoint(-3.0F, -2.0F, 2.0F);
this.Shape2.setTextureSize(128, 64);
this.Shape2.mirror = true;
this.setRotation(this.Shape2, 0.0F, 0.0F, 0.0F);
this.Shape4 = new ModelRenderer(this, 83, 10);
this.Shape4.addBox(0.0F, 0.0F, 0.0F, 1, 5, 3);
this.Shape4.setRotationPoint(-5.0F, 6.0F, 2.0F);
this.Shape4.setTextureSize(128, 64);
this.Shape4.mirror = true;
this.setRotation(this.Shape4, 0.0F, 0.0F, 0.0F);
this.Shape41 = new ModelRenderer(this, 59, 10);
this.Shape41.addBox(0.0F, 0.0F, 0.0F, 1, 5, 3);
this.Shape41.setRotationPoint(4.0F, 6.0F, 2.0F);
this.Shape41.setTextureSize(128, 64);
this.Shape41.mirror = true;
this.setRotation(this.Shape41, 0.0F, 0.0F, 0.0F);
this.Shape5 = new ModelRenderer(this, 68, 10);
this.Shape5.addBox(0.0F, 0.0F, 0.0F, 6, 2, 1);
this.Shape5.setRotationPoint(-3.0F, 9.0F, 6.0F);
this.Shape5.setTextureSize(128, 64);
this.Shape5.mirror = true;
this.setRotation(this.Shape5, 0.0F, 0.0F, 0.0F);
this.Shape6 = new ModelRenderer(this, 68, 14);
this.Shape6.addBox(0.0F, 0.0F, 0.0F, 4, 1, 1);
this.Shape6.setRotationPoint(-2.0F, 8.0F, 6.0F);
this.Shape6.setTextureSize(128, 64);
this.Shape6.mirror = true;
this.setRotation(this.Shape6, 0.0F, 0.0F, 0.0F);
this.Shape7 = new ModelRenderer(this, 58, 26);
this.Shape7.addBox(0.0F, 0.0F, 0.0F, 6, 4, 1);
this.Shape7.setRotationPoint(-3.0F, 1.0F, 6.0F);
this.Shape7.setTextureSize(128, 64);
this.Shape7.mirror = true;
this.setRotation(this.Shape7, 0.0F, 0.0F, 0.0F);
}
public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) {
super.render(entity, f, f1, f2, f3, f4, f5);
this.setRotationAngles(f, f1, f2, f3, f4, f5, entity);
FMLClientHandler.instance().getClient().getTextureManager().bindTexture(this.bp_texture);
if(entity instanceof EntityPlayer) {
EntityPlayer ep = (EntityPlayer)entity;
if(ep.isSneaking() && !ep.isInWater()) {
GL11.glPushMatrix();
GL11.glTranslatef(0.0F, 0.1F, 0.0F);
GL11.glRotatef(25.0F, 1.0F, 0.0F, 0.0F);
GL11.glPopMatrix();
}
}
this.Shape1.render(f5);
this.Shape2.render(f5);
this.Shape4.render(f5);
this.Shape41.render(f5);
this.Shape5.render(f5);
this.Shape6.render(f5);
this.Shape7.render(f5);
}
public void render(float f5) {
this.Shape1.render(f5);
this.Shape2.render(f5);
this.Shape4.render(f5);
this.Shape41.render(f5);
this.Shape5.render(f5);
this.Shape6.render(f5);
this.Shape7.render(f5);
}
private void setRotation(ModelRenderer model, float x, float y, float z) {
model.rotateAngleX = x;
model.rotateAngleY = y;
model.rotateAngleZ = z;
}
public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity ent) {
super.setRotationAngles(f, f1, f2, f3, f4, f5, ent);
}
}
Анти, перенеси тему в туториалы, если сочтешь нужным. Надеюсь кому-то да пригодится.
Картинка готового варианта - тык.