mirror of
https://github.com/KAMKEEL/CustomNPC-Plus.git
synced 2026-11-12 02:37:27 +00:00
Attempting to figure out how to render 2 versions of one EntityCustomNpc, all attempts failed thus far.
81 lines
2.1 KiB
Java
81 lines
2.1 KiB
Java
package noppes.npcs.entity;
|
|
|
|
import net.minecraft.entity.Entity;
|
|
import net.minecraft.entity.EntityLivingBase;
|
|
import net.minecraft.nbt.NBTTagCompound;
|
|
import net.minecraft.world.World;
|
|
import noppes.npcs.CustomNpcs;
|
|
import noppes.npcs.ModelData;
|
|
import noppes.npcs.ModelPartData;
|
|
import noppes.npcs.client.EntityUtil;
|
|
|
|
public class EntityCustomNpc extends EntityNPCInterface{
|
|
public ModelData modelData = new ModelData();
|
|
|
|
public EntityCustomNpc(World world) {
|
|
super(world);
|
|
isUpdatedVersion = false;
|
|
}
|
|
|
|
@Override
|
|
public void readEntityFromNBT(NBTTagCompound compound) {
|
|
if(compound.hasKey("NpcModelData"))
|
|
modelData.readFromNBT(compound.getCompoundTag("NpcModelData"));
|
|
super.readEntityFromNBT(compound);
|
|
}
|
|
|
|
@Override
|
|
public void writeEntityToNBT(NBTTagCompound compound) {
|
|
super.writeEntityToNBT(compound);
|
|
compound.setTag("NpcModelData", modelData.writeToNBT());
|
|
}
|
|
|
|
@Override
|
|
public void onUpdate(){
|
|
super.onUpdate();
|
|
if(isRemote()){
|
|
ModelPartData particles = modelData.getPartData("particles");
|
|
if(particles != null && !isKilled()){
|
|
CustomNpcs.proxy.spawnParticle(this, "ModelData", modelData, particles);
|
|
}
|
|
EntityLivingBase entity = modelData.getEntity(this);
|
|
if(entity != null){
|
|
try{
|
|
entity.onUpdate();
|
|
}
|
|
catch(Exception e){
|
|
|
|
}
|
|
EntityUtil.Copy(this, entity);
|
|
}
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void mountEntity(Entity par1Entity){
|
|
super.mountEntity(par1Entity);
|
|
updateHitbox();
|
|
}
|
|
|
|
@Override
|
|
public void updateHitbox() {
|
|
Entity entity = modelData.getEntity(this);
|
|
if(modelData == null || entity == null){
|
|
baseHeight = 1.9f - modelData.getBodyY() + (modelData.head.scaleY - 1) / 2;
|
|
super.updateHitbox();
|
|
}
|
|
else{
|
|
if(entity instanceof EntityNPCInterface)
|
|
((EntityNPCInterface)entity).updateHitbox();
|
|
width = (entity.width / 5f) * display.modelSize;
|
|
height = (entity.height / 5f) * display.modelSize;
|
|
|
|
if(width < 0.1f)
|
|
width = 0.1f;
|
|
if(height < 0.1f)
|
|
height = 0.1f;
|
|
this.setPosition(posX, posY, posZ);
|
|
}
|
|
}
|
|
}
|
|
|