I've been trying to get this to work for a while, looked through the ItemMonsterPlacer and EntityEgg classes. I have an item that when used (right clicked) on a passive mob (EntityCow) will transform it into a new entity. The method was cobbled together using the code from shears as a template. The transformation seems to be working correctly but when the new entity is spawned it is not facing the same direction as the previous (pre-transformed) entity. I am wondering if it is related to a client/server communication difficulty but I am still quite new at modding so uncertain how to reconcile. Code listed below and greatly appreciate if anyone has any input!
@Override
public boolean itemInteractionForEntity(ItemStack stack, EntityPlayer playerIn, EntityLivingBase target, EnumHand hand)
{
if (target instanceof EntityCow)
{
if(!target.world.isRemote)
{
EntityEntry EntID = net.minecraftforge.fml.common.registry.EntityRegistry.getEntry(CustomEntity.class);
ResourceLocation CustomEntityResource= ForgeRegistries.ENTITIES.getKey(EntID);
Entity testCustomEntity = EntityList.createEntityByIDFromName(CustomEntityResource, target.world);
if (testCustomEntity instanceof CustomEntity)
{
CustomEntity createdEntity = (CustomEntity)testCustomEntity;
createdEntity.setLocationAndAngles(target.posX, target.posY, target.posZ, target.rotationYaw, target.rotationPitch);
createdEntity.rotationYawHead = target.rotationYawHead;
createdEntity.renderYawOffset = target.renderYawOffset;
createdEntity.onInitialSpawn(target.world.getDifficultyForLocation(new BlockPos(createdEntity)), (IEntityLivingData)null);
target.world.spawnEntity(testCustomEntity);
createdEntity.playLivingSound();
}
target.world.removeEntity(target);
target.setDead();
stack.shrink(1);
return true;
}
else
{
return false;
}
}
else
{
return false;
}
}