Jump to content

Gortart

Members
  • Posts

    9
  • Joined

  • Last visited

Gortart's Achievements

Tree Puncher

Tree Puncher (2/8)

1

Reputation

  1. I justed ended up passing default model to my model and use it as parent. Not very elegant but at least it works. private ModelBiped parent; // new one gets assigned in the getArmorModel() every time. @Override public void setRotationAngles(float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch, float scaleFactor, Entity entityIn) { parent.setRotationAngles(limbSwing, limbSwingAmount, ageInTicks, netHeadYaw, headPitch, scaleFactor, entityIn); shoulder.rotateAngleX = parent.bipedLeftArm.rotateAngleX; shoulder.rotateAngleY = parent.bipedLeftArm.rotateAngleY; shoulder.rotateAngleZ = parent.bipedLeftArm.rotateAngleZ + 0.1f; } @Override public void setModelAttributes(ModelBase model){ parent.setModelAttributes(model); }
  2. I made a armor item with custom model. It is just a shoulder pad. It works fine for player and even for skeletons. But it looks weird on zombies. I think it is because I extend ModelBiPed for my armor model and zombies use ModelZombie which does extra calculation for arms in setRotationAngels(). My first thought was making another model class that extends ModelZombie and check if the entity is zombie but I don't like hardcoding. So is there any way other than hardcoding to fix this? My model class : public class TestModel extends ModelBiped { private ModelRenderer shoulder; public TestModel(float scale) { super(scale, 0, 64, 64); shoulder = new ModelRenderer(this, 0, 0); shoulder.addBox(-1, -3, -3, 5, 2, 6); shoulder.setRotationPoint(5.0F, 2.0F, 0.0F); } @Override public void render(Entity entityIn, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch, float scale) { this.setRotationAngles(limbSwing, limbSwingAmount, ageInTicks, netHeadYaw, headPitch, scale, entityIn); shoulder.render(scale); } @Override public void setRotationAngles(float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch, float scaleFactor, Entity entityIn) { super.setRotationAngles(limbSwing, limbSwingAmount, ageInTicks, netHeadYaw, headPitch, scaleFactor, entityIn); shoulder.rotateAngleX = bipedLeftArm.rotateAngleX; shoulder.rotateAngleY = bipedLeftArm.rotateAngleY; shoulder.rotateAngleZ = bipedLeftArm.rotateAngleZ + 0.1f; // rotates a little. } }
  3. You could subscribe to WorldTickEvent and check if specific BlockPos has been changed in specific dimension. This would work every time, but probably has more impact on the performance. Maybe check every few seconds?
  4. It's same size as default glass pane. BlockPane has AABB list and default(thin) one is new AxisAlignedBB(0.4375D, 0.0D, 0.4375D, 0.5625D, 1.0D, 0.5625D) . Min values can be greater than zero.
  5. Try also overriding Container#updateProgressBar(int, int).
  6. Sorry, should I edit those parts out?
  7. You can use Container#detectAndSendChanges() to send pakcet and Container#updateProgressBar(int, int)(clinet only) to update data. in detectAndSendChanges(), compare values you want to update and call IContainerListener#sendProgressBarUpdate(Container, int, int) for every listener in Container#listeners. in updateProgressBar(int, int), update values according to ids. Look into the ContainerFurnace and GuiFurnace (container updats values in TE and GUI draws from TE's values)
  8. You are registering ItemBase dumbBell and not GymDumbbell gymdumbbell . dumbBell is just ItemBase and will not have any properties from GymDumbbell. Also, If you have too many Items your code might begin to look ugly. Move register() and init() to seperate class just for registering and holding Item objects for cleaner code. Normally called ModItems.
  9. EntityLiving doesn't have readFromNBT or writeToNBT. Use readEntityFromNBT and writeEntityToNBT. Did you just copy pasted from tile entity code?
×
×
  • Create New...

Important Information

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